Зачем использовать индекс
Индексы используются для двух вещей.
- Выбор предметов
- Сортировка списка
Для выбора элементов нужен индекс, поскольку поиск по всем записям невозможен.
Однако, если вы когда-либо select
100 элементов одновременно, MySQL может легко отсортировать эти элементы на месте без использования индекса.
Итак, сначала поместите индексы в элементы, которые есть в ваших предложениях where
и join
.
Затем посмотрите, сколько элементов вы выбираете за запрос. Если это меньше, чем, скажем, 200, я бы не стал беспокоиться об индексах для сортировки.
Добавление индекса
CREATE INDEX index_name
ON tbl_name (цена)
См .: http://dev.mysql.com/doc/refman/5.1/en/create-index.html
Для всех параметров вы можете указать индекс.
Создание таблицы
Мое предложение:
CREATE TABLE materials (
id integer not null autoincrement primary key,
name varchar not null,
description varchar not null,
stockdate date not null,
saledate date not null,
price decimal(10,2) not null,
/*my suggestion, put an index on all, but not on description*/
INDEX `i_name` (name),
INDEX `i_stockdate` (stockdate),
INDEX `i_saledate` (saledate),
INDEX `i_price` (price)) ENGINE = MyISAM;
Если вы выберите в описании в предложении where
, то добавьте полнотекстовый индекс в описании.
CREATE FULLTEXT INDEX i_description ON materials (description);
Если вы сортируете только по описанию , не не добавляйте индекс, это не стоит ИМО.