mysql order by не юзает index

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
968

Имеем простейшую структуру:

CREATE TABLE IF NOT EXISTS `cms_category` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`trans` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`description` text COLLATE utf8_unicode_ci NOT NULL,

`title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`keywords` text COLLATE utf8_unicode_ci NOT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `trans` (`trans`),

KEY `name` (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=139

Простейший запрос:

EXPLAIN SELECT * FROM cms_category ORDER BY name

Итого:

Using filesort

Делаю:

EXPLAIN SELECT * FROM cms_category FORCE INDEX(name) ORDER BY name

Всё ОК, индекс юзает.

Серьёзно? Для такого простейшего запроса надо mysql тыкать носом в index?

---------- Добавлено 13.05.2016 в 22:23 ----------

Таблица размером 512 КБ. Вычитал на немецком форуме, что если таблица слишком мала, то mysql может не взять индекс т.к. его подключение вызовет больше накладных расходов, чем сортировка напрямую.

Но тогда не ясно почему периодически появляется статус:

Creating sort index

На этой таблице.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
edogs software
На сайте с 15.12.2005
Offline
775
#1

На 512к индекс использовать смысла действительно нет. Ибо нет смысла использовать структуру сортировки для (грубо говоря) 10 элементов. Проще загрузить их сразу в память и там сортирнуть.

Но поскольку у Вас индекс прописан, то он должен периодически создаваться, даже если нет смысла его использовать, отсюда и периодически появляющийся статус.

Да и вообще, думать о происходящих процессах в таблице 512кб, это классическое "premature optimisation root of evil". Будет 512Мб - задумаетесь. Будет 5Гб - начнете решать появляющиеся проблемы. Будет 51.2Гб - задумаетесь о структуре и оптимизации:)

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий