Понимание некоторых советов по оптимизации MySQL - PullRequest
4 голосов
/ 29 марта 2011

Привет, я искал несколько способов сделать мои запросы MySQL более оптимизированными, я купил некоторые из них на практике, но для некоторых я хотел бы понять, почему они рекомендуются.

Например, не используя "LIMIT 10000,10 ", когда я узнал, что MySQL читает 10010 строк, выбрасывает 10000 и возвращает 10.

Теперь я хочу узнать следующее:

Ссылаясь на эту статью: http://forge.mysql.com/wiki/Top10SQLPerformanceTips

«Использовать умный ключ и ORDER BY вместо MAX»

  1. Что такое «умный ключ»?

  2. Какое исполнениепуть, который использует MySQL для расчета MAX, рекомендуется избегать его.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 30 марта 2011

Умный ключ - это ключ, который позволяет mysql читать строки в соответствии с требуемым порядком, таким образом, не используя сортировку файлов или временные таблицы.

Это не должен быть первичным ключом.Чтобы узнать, когда вы можете использовать такой ключ для сортировки, прочитайте эту очень полезную статью: http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html

1 голос
/ 30 марта 2011

Я собираюсь ответить на вопрос 1 и сказать, что «умный ключ» - это первичный ключ в таблице, который имеет значение при заказе определенным образом.(Например, база данных отеля с таблицей, которая отслеживает, когда гости регистрируются. Сделайте первичный ключ таблицы TimeStamp регистрации. Затем, когда вам необходимо узнать последние проверки, вы можете заказать по первичнойвведите в порядке убывания).Я полагаю, это быстрее, чем иметь таблицу, которая использует автоинкрементное целое число в качестве первичного ключа и поле Timestamp.

Вы можете найти свой ответ на вопрос 2 в этом обсуждении переполнения стека .Он должен дать вам представление о пути выполнения, но не обязательно сравнивать его с умным ключом , упомянутым в вашей ссылке.

...