UNION быстрее, чем выполнение отдельных запросов? - PullRequest
4 голосов
/ 21 ноября 2011

У меня есть 7 таблиц, с которыми я мог бы объединиться (с пределом 30)

ИЛИ

, если я должен выполнить 7 отдельных запросов (с пределом 30) и проследить их с помощьюPHP.

Что почему быстрее?Более оптимальным?Во-вторых, мне нужно было бы одновременно проследить часть 7 запросов и найти нужные мне 30 лучших.

Ответы [ 3 ]

3 голосов
/ 21 ноября 2011

Каковы ваши потребности?

Как писал ранее @chris, это может помочь вам: Сложный SQL (возможно внешние соединения)

select * from (select ... from ... order ... limit 10 )
union all
select * from (select ... from ... order ... limit 10)
 order by ... limit 10

Как я знаю (проверено на БД с 50 миллионами строк) - это гораздо сложнее, чем не использовать отклоненные запросы.

2 голосов
/ 21 ноября 2011

Прежде чем принимать решения, вам нужно как минимум выполнить оба вида запросов с помощью EXPLAIN MySql и проанализировать результаты.Как то так:

EXPLAIN SELECT f1, f2, f3 FROM t1
    UNION ALL
       SELECT f1, f2, f3 FROM t2;
0 голосов
/ 04 декабря 2011

зависит, если каждый запрос дает уникальные результаты с использованием UNION ALL, тем лучше вы сохраняете поездки на сервер и можете отсортировать результат после выполнения объединения.например,

 select column1 alias1, column2 alias2, from table x where ... 
  UNION ALL
  select column3 alias1, column2 alias2 from table y where ...
  ...
  order by 1

Извините за мой английский

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...