berezuev
@berezuev
#define TRUE FALSE

Mysql: select from select?

Собственно, имеется таблица вида
|name|surname|info1|info2|info3|

name и surname индексированы, соответственно, select ... where name="foo" && surname="bar" проходят мгновенно. Если добавляю поиск еще по одному столбцу, то уже долго все идет...

Посему, вопрос. Как сделать так, чтобы сначала происходил поиск по первым двум полям, а из полученных данных уже делать еще один селект? Либо, может вообще надо как-то по другому все делать?
  • Вопрос задан
  • 2933 просмотра
Пригласить эксперта
Ответы на вопрос 3
Может нужно все-таки подходящий индекс подобрать и для третьего поля? Как вам повторный селект-то поможет, если все равно надо фильтровать по третьему полю? Что у вас за тип у третьего поля и какой у вас фильтр на него?
Ответ написан
Комментировать
@ollisso
смотрите explain, почему оно не работает

можно попробовать сказать mysql какой ключ использовать:
https://dev.mysql.com/doc/refman/5.1/en/index-hint...
Ответ написан
Комментировать
А в чём проблема ? Таблицей в from может быть не готовая таблица, а подзапрос где-то так:
select * from (select * where name="foo" and surname="bar" ) t
where t.info1="qwe"

Можно представление (view) создать, а из него выбирать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы