У меня есть таблица с двумя столбцами: id (первичный ключ) и writeForm (VARCHAR 255). Общее количество строк составляет около 850 000.Как улучшить ORDER BY ... LIMIT ... query peformance?
мне нужно выполнить следующий запрос:
SELECT writtenform FROM `dedict_uniqueWF` order by id LIMIT 1,20000
Этот запрос занимает более 10 минут. Когда я запускаю запрос объяснения, кажется, что он не использует индекс. Любая идея почему?
Объяснить запрос:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE dedict_uniqueWF ALL NULL NULL NULL NULL 836753 Using filesort
Объясните таблицу:
Field Type Null Key Default Extra
id int(11) NO PRI NULL auto_increment
writtenForm varchar(255) YES NULL
Тем временем я добавил новый индекс. Еще один результат в объяснении. Показать Индексы:
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
dedict_uniqueWF 0 PRIMARY 1 id A 836753 NULL NULL BTREE
dedict_uniqueWF 1 writtenForm 1 writtenForm A 836753 NULL NULL YES BTREE
Добавления условия использования индекса силы будет иметь точно такой же результат в объясняющем запросе (Использование FileSort):
explain SELECT writtenform FROM `dedict_uniqueWF` use index(PRIMARY) order by id LIMIT 1,20000
Эй, вы нашли и прочитали этот ответ: http://stackoverflow.com/questions/12148943/mysql-performance-slow-using-filesort? –
Интересный первичный ключ индексируется по умолчанию, и он должен учитывать индекс. Можете ли вы проверить индексы в таблице 'show indexes from dedict_uniqueWF' –
Что происходит, когда вы принудительно используете первичный (с помощью' SELECT ... FROM ... USE KEY FOR ORDER BY ... ')? – raina77ow