Ich habe eine Tabelle company
, die eine Spalte namens country_id
hat ist eine Referenz von country
Tabelle Primärschlüssel-ID.MySQL - Verbesserung der Leistung für Multi-Länder
CREATE TABLE `company` (
`Id` INT(11) NOT NULL,
`Name` VARCHAR(100) NOT NULL,
`Symbol` VARCHAR(50) NOT NULL,
`Industry` VARCHAR(100) NOT NULL,
`Type` VARCHAR(20) NOT NULL,
'country_id' INT(11) NOT NULL,
PRIMARY KEY (`Id`),
CONSTRAINT `company_ibfk_1` FOREIGN KEY (`country_id`) REFERENCES `country` (`Id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;
In dieser Tabelle hat mehrere Unternehmen für mehrere Länder. Wie die folgende Tabelle.
Meine company
Tabelle hat riesige Daten. Ich möchte die Select-Abfrage auf company
Tabelle Leistung basierend auf Land verbessern. Wählen Sie Abfrage wird wie
select * from company where country_id = 2
Was wird die beste Design-Ansatz sein? Muss ich die Indizierung auf country_id
Spalte hinzufügen oder muss ich die Partitionierung basierend auf der country_id
Spalte tun? Bitte vorschlagen.
Wenn diese Tabelle ist schreibgeschützt (außer einmal-in-a-while Admin-Zweck) können Sie MyISAM für diese Tabelle verwenden; Leseperformances sind auf unserem Setup für diese Art von Tabelle verbessert – Preuk
@ Preuk, das ist keine schreibgeschützte Tabelle. In diese Tabelle werden fortlaufend Daten eingefügt. Aber ich bevorzuge es, die Select-Abfrage zu verbessern. – Suvonkar
Wenn Sie nur zwei Tabellen haben, von denen nur eine riesige (Über Millionen von Re-Records) und kleine Tabelle (Max 200 Datensätze) ist, warum sind Sie nicht Denormaliz Ihre Tabelle, solange sowohl country.id und country.name sind einzigartig – Jay