Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Какой сделать индекс для запроса


Автор: Black 3.3.2012, 22:29
Есть запрос:
Код

SELECT * FROM tbl WHERE remove='0' AND (from_user='38' OR to_user='26')


Как сделать для него индекс?

Сделал индексы по колонкам from_user и to_user, но они используются только если такой запрос:
Код

SELECT * FROM tbl WHERE from_user='38' OR to_user='26'


Так же у меня в таблице есть составной индекс начинающийся с поля remove, поэтому используется только он при запросе:
Код

SELECT * FROM tbl WHERE remove='0' AND (from_user='38' OR to_user='26')


Хотелось, чтобы MySQL использовала индексы from_user и to_user, а потом  выбрала те у кого remove='0', а не наоборот.

Автор: Black 3.3.2012, 22:46
Решил проблему использовал UNION

Автор: Akina 4.3.2012, 17:18
Код

SELECT * FROM tbl WHERE (remove='0' AND from_user='38') OR (remove='0' AND to_user='26')


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)