Задать вопрос
berezuev
@berezuev
#define TRUE FALSE

Mysql: select from select?

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

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

Посему, вопрос. Как сделать так, чтобы сначала происходил поиск по первым двум полям, а из полученных данных уже делать еще один селект? Либо, может вообще надо как-то по другому все делать?
  • Вопрос задан
  • 2958 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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) создать, а из него выбирать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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