У меня есть таблица company
, которая имеет столбец под названием country_id
является ссылкой country
таблица с основным ключом.MySQL - Улучшение производительности для нескольких стран
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;
В этой таблице представлено несколько компаний для нескольких стран. Как и нижеприведенная таблица.
Моя company
таблица имеет огромные данные. Я хочу, чтобы улучшить запрос выбора на company
производительность таблицы по стране. Выбрать запрос будет
select * from company where country_id = 2
Какой будет лучший подход к дизайну? Нужно ли добавлять индексирование на столбец country_id
или мне нужно сделать разбиение на основе столбца country_id
? Пожалуйста, предложите.
Если эта таблица только для чтения (за один раз-в-время, за исключением admin), вы можете использовать MyISAM для этой таблицы; улучшенные показатели чтения в нашей настройке для такого типа таблицы – Preuk
@Preuk, это не таблица только для чтения. Непрерывные данные вставляются в эту таблицу. Но я предпочитаю улучшать выбор запроса. – Suvonkar
Если у вас есть только две таблицы, которые только из них огромны (более миллиона рекордов) и небольшой стол (макс. 200 записей), почему вы не используете Denormaliz для своей таблицы, пока оба country.id и country.name UNIQUE – Jay