SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 28.10.2010 12:47:33

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

UNION и LIMIT: стоит ли помогать общему LIMIT вложенными

SELECT ..., created
FROM table_1
UNION
SELECT ..., created
FROM table_2
ORDER BY created LIMIT N


VS.

(
SELECT ..., created
FROM table_1
ORDER BY created
LIMIT N
)
UNION
(
SELECT ..., created
FROM table_2
ORDER BY created
LIMIT N
)

ORDER BY created
LIMIT N


В первом примере один раз сортируется набор строк длиной M. Во втором примере сортируется Q наборов строк средней длиной M/Q и потом еще один раз - маленький набор строк (думаю, им можно пренебречь).

Что быстрее? (теоретически и в жизни?)

Т.е. выигрыш от уменьшения числа сортируемых записей линейный или хуже? (что-то мне подсказывает, что логарифмический (т.е. хуже), но я хочу уточнить)

Неактивен

 

#2 28.10.2010 13:08:43

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

Re: UNION и LIMIT: стоит ли помогать общему LIMIT вложенными

А EXPLAIN ты над ними смотрел? wink

У меня ощущение, что второе лучше: оно вытаскивает N строк по индексу из
каждой таблицы, а потом сортирует в памяти.

В первом же случае оно вытаскивает все строки из таблиц и сортирует в памяти.

Неактивен

 

#3 28.10.2010 14:14:34

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

Re: UNION и LIMIT: стоит ли помогать общему LIMIT вложенными

оно вытаскивает N строк по индексу из
каждой таблицы, а потом сортирует в памяти

Пожалуй, это решающее обстоятельство здесь.

Ну а в общем случае (при прочих равных условиях) что легче? Отсортировать и выбрать 30 записей из 10 таблиц по 1000 строк или из одной таблицы в 10 000 строк?

Неактивен

 

#4 28.10.2010 14:59:06

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

Re: UNION и LIMIT: стоит ли помогать общему LIMIT вложенными

В такой постановке — не принципиально.

Неактивен

 

Board footer

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