Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
drewblin
Зарегистрирован: 12.02.2010 Сообщения: 1
|
Добавлено: Пт Фев 12 2010 22:25 Заголовок сообщения: Работа индексов |
|
|
Использую MySQL
Есть таблица ААА (порядка 3 млн. записей):
id int unsigned
addr int unsigned
prod int unsigned
На ней существует 2 индекса: (prod, addr) и (prod)
Запрос
Код: | select distinct addr
from AAA USE INDEX (prod_addr)
where
prod IN (много значений) |
выполняется за 0.2 секунды
Запрос
Код: | select distinct addr
from AAA USE INDEX (prod)
where
prod IN (много значений) |
выполняется за 17 секунд
Выборки возвращают по 2 тысячи записей. Если объем таблицы меньше (сотни тысяч записей) то оба запроса работабт почти одинаково.
Принципиально мне понятно, почему возникает разницаво времени - в первом случае достаточно только индекса чтобы выдать результат.
Во втором - надо еще побегать по таблице, чтобы получить нужне значения.
Сам вопрос: почему такая огромная разница? В моем представлении в индексе хранится адрес записи - остается только перейти на нужный адрес.
Более точно: такая проблема - это особенность MySQL или кривизна настроек? Если второе - то что надо настраивать? |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Пн Мар 29 2010 11:41 Заголовок сообщения: дублирование индексов -- есть ли более полезное дело? |
|
|
дело тут не в настройках, а в том, что при оптимизации индекс используется не только при обработке слова "уэре", но и слова "дистинкт". в твоём случае для оптимизации "уэре" оба индекса действуют однох...венно, то есть одинаково, а вот для оптимизации слова "дистинкт" индекс прод_аддр подходит лучше. вот и ускорение
----------------------------------------------------
дублирование индексов -- есть ли более полезное дело? |
|
Вернуться к началу |
|
|
|