SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.04.2011 18:53:05

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

MERGE ENGINE vs UNION


(SELECT * FROM data_2011_04_10 ORDER BY date LIMIT 10)
UNION ALL
(SELECT * FROM data_2011_04_11 ORDER BY date LIMIT 10)
UNION ALL
(SELECT * FROM data_2011_04_12 ORDER BY date LIMIT 10)
...
ORDER BY date LIMIT 10

vs

SELECT * FROM data_merged ORDER BY date LIMIT 10

Есть ли какие-нибудь преимущества/недостатки по производительности у какого-либо из двух вариантов?

Например, такой вопрос: как открываются таблицы в случае UNION? Все запрошенные в любом случае или по мере выполнения запроса, если понадобятся (например, если по WHERE по индексу видно, что таких записей нет - будут ли тратиться какие-то ресурсы на поиск по этой таблице?)

Неактивен

 

#2 20.04.2011 21:27:22

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: MERGE ENGINE vs UNION

По производительности нет, а вот INSERT — штука бывает полезная.
Ну и запрос читабельнее. В остальном — они идентичны.

Открываются все таблицы и там, и там, WHERE влияет и там, и там.

Неактивен

 

#3 21.04.2011 08:21:38

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: MERGE ENGINE vs UNION

А не дает ли преимущество UNION-у то, что в малых запросах можно продублировать ORDER BY и LIMIT, в результате чего общая сортировка будет по меньшему количеству записей?

Неактивен

 

#4 21.04.2011 16:27:42

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: MERGE ENGINE vs UNION

Дает, учитывая, что запрос при этом получается другой wink

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson