В ответах на вопросы вы уже писали о том, что KEY
и INDEX
ключевые слова являются синонимами nymous. В дополнение к этому, вот несколько примеров.
Создание индекса с помощью INDEX
или KEY
ключевое слово при создании таблицы
CREATE TABLE IF NOT EXISTS `sub` (
`s_id` int(3) NOT NULL AUTO_INCREMENT COMMENT 'Standard id',
`std` int(10) NOT NULL COMMENT 'Standard',
`sub_nm` varchar(25) NOT NULL COMMENT 'Subject Name',
PRIMARY KEY (`s_id`),
INDEX `sub_nm` (`sub_nm`),
INDEX `sub_nm_2` (`sub_nm`),
INDEX `sub_nm_3` (`sub_nm`)
);
Это не разумно создать 3 индексов на одном поле. Одного индекса достаточно на sub_nm
.
Создание индекса после создания таблицы
CREATE TABLE IF NOT EXISTS `sub` (
`s_id` int(3) NOT NULL AUTO_INCREMENT COMMENT 'Standard id',
`std` int(10) NOT NULL COMMENT 'Standard',
`sub_nm` varchar(25) NOT NULL COMMENT 'Subject Name',
PRIMARY KEY (`s_id`)
);
create index sub_nm on `sub`(sub_nm);
-- create key sub_nm2 on `sub`(sub_nm); WILL ERROR OUT
alter table `sub` add index sub_nm3 (sub_nm);
alter table `sub` add key sub_nm4 (sub_nm);
Обратите внимание на различные способы можно создать индекс по таблице. Обычно я использую имя индекса: idx_tablename_fieldname (например, idx_sub_sub_nm).
Индекс на sub_nm может повысить производительность запросов, которые используют sub_nm для фильтрации, сортировки и группировки. EXPLAIN
помогает определить, будет ли база данных считать, что индекс будет использоваться. Если база данных не использует запрос, который очень сильно верить должно, index hints могут быть предоставлены в запросе, как это:
select s_id from sub use index (idx_sub_sub_nm) where sub_nm = 'test';
, что польза от множественного индекса? @Taras Soroka – user4956971
Общее, с несколькими индексами (например ... KEY ind1 (column_1), KEY ind2 (column2), .....) вы можете индексировать комбинации значений столбцов и ускорять запросы, такие как SELECT * from ТАБЛИЦА WHERE column1 = X AND column_2 = Y , но в вашем случае я действительно не знаю, что означает создание 3 индексов для 1 поля. –