Оптимизация однострочных запросов из больших таблиц в MySQL - PullRequest
2 голосов
/ 13 октября 2008

Я имею дело с таблицами MySQL, которые по сути являются результатами моделирования трассировки лучей в имитируемой офисной комнате с одним жалюзи. Мне обычно нужно получить результат симуляции для уникальной комбинации времени и настроек блайндов. Так что в итоге я делаю много

SELECT result FROM results WHERE timestamp='2005-05-05 12:30:25' \
         AND opening=40 AND slatangle=60

Это выглядит подозрительно оптимизируемым, поскольку этот запрос никогда не должен возвращать более одной строки. Имеет ли смысл определять индекс по трем столбцам, которые однозначно определяют каждую строку? Или я могу использовать другие методы?

Ответы [ 4 ]

3 голосов
/ 17 октября 2008

Я бы предложил добавить LIMIT 1; до конца запроса.

William

3 голосов
/ 13 октября 2008

Ответ, безусловно, да. Если вы определяете уникальный индекс для отметки времени, открытие и разбивка MySQL должны быть в состоянии найти вашу строку с очень небольшим поиском диска.

Вы можете поэкспериментировать с созданием индекса по метке времени, открытию, сланцу и результату. MySQL может быть в состоянии извлечь ваши данные из индекса, вообще не касаясь файла данных.

В руководстве MySQL есть раздел об оптимизации запросов .

2 голосов
/ 01 марта 2009

Да, помогает создать индекс из нескольких столбцов. Также вы должны проверить производительность в другом порядке столбцов, например O (c1, c2, c3)! = O (c2, c1, c3)

Посмотрите

http://joekuan.wordpress.com/2009/01/23/mysql-optimize-your-query-to-be-more-scalable-part-12/ http://joekuan.wordpress.com/2009/01/23/mysql-optimize-your-query-to-be-more-scalable-part-22/

2 голосов
/ 13 октября 2008

Я бы не советовал добавлять 3 индекса. Индекс, использующий все три столбца, может быть лучше, и даже установка первичного ключа, уникального для этой комбинации, будет лучше - только если вы уверены, что он уникален.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...