powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / использование индеков
9 сообщений из 9, страница 1 из 1
использование индеков
    #32751239
Фотография tonna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чисто теоретический вопрос.
В таблице может быть несколько индексов.
В MySQL для того чтобы при запросе использовался индекс необходимо чтобы в каждой группе(разделённой OR) присутствовал индекс(или его часть). Получается что для отдельного запроса может использоваться только один индекс?
Может ли для одного запроса использоваться несколько индексов.
...
Рейтинг: 0 / 0
использование индеков
    #32751368
sky2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в запросе происходит поиск по двум поиндексированным полям, оптимизатор выбирает наиболее подходящий индекс и использует его

--
http://jcatki.no-ip.org/c++/bart.jpg
...
Рейтинг: 0 / 0
использование индеков
    #32751381
Фотография tonna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно. Но вопрос сводится к тому ПОЧЕМУ оптимизатор так поступает?
Например есть большая таблица с большим количеством колонок.
Запрос отбирает записи по 2 полям.

select * from tab where fi1='some' or fi2='anot'

И допустим имеется кроме прочего 2 индекса по fi1 и fi2

Так вот получается, что эти индексы до лампочки и будет идти последовательный перебор строчка за строчкой.

А ведь как было бы чудно - строится(при помощи индексов) битовая карта(bitmap) по первому условию, по второму. И тупо
соединяется. Невооружённым глазов видно - что это быстрее чем последовательно.

Так ПОЧЕМУ оптимизатор так не поступает.
Мне это принципиально понять надо. Пожалуйста.
...
Рейтинг: 0 / 0
использование индеков
    #32751414
sky2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут уже IMHO бо точно не уверен
Если индекс не составной, а их 2 то оптимизатор выбирает из двух наиболее разреженный индекс по нему производит выборку а далее последовательным перебором уже проходит второе условие
Гуру поправят если не так )

--
http://jcatki.no-ip.org/c++/bart.jpg
...
Рейтинг: 0 / 0
использование индеков
    #32751490
Фотография tonna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет.
цит. из MySQL мануала:
These WHERE clauses do NOT use indexes:
... WHERE index=1 OR A=10 /* Index is not used in both AND parts */

Эх, зашёл бы сюда какой-нибудь ВЕЛИКИЙ УМ, просвятил бы ...
...
Рейтинг: 0 / 0
использование индеков
    #32751509
sky2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно я написал я имел ввиду AND
а OR хез как работает )
...
Рейтинг: 0 / 0
использование индеков
    #32752406
Фотография tonna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От вас дождёшся ответа...
Кстати в DBISAM таже штука(да и везде наверное) - запосы с OR вообще не оптимизируются.
Говорят, что это не работает потому, что индексные файлы полностью не хранятся в памяти, а по мере надобности их страницы(физические) подгружаются. Хотя с другой стороны если оперативы немеряно, то в чём проблема?
...
Рейтинг: 0 / 0
использование индеков
    #32753099
Насколько я понял отсюда:
http://dev.mysql.com/doc/mysql/en/Index_Merge_optimization.html
в пятерке появился новый метод оптимизации подобных запросов. Хотя для меня все еще как-то мутно... Может всем скопом разберемся...
...
Рейтинг: 0 / 0
использование индеков
    #32754349
Фотография tonna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за полезную инфу.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / использование индеков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]