Что быстрее 50 маленьких или 1, но большой запрос?

AdminGorkyRu

Новичок
Я вот чего понять не могу... ты не может сделать объединение по внешним ключам то? тебе тогда не придется синхронизировать никакие твои id-шники:

SELECT table1.id AS id, table1.name AS name, table2.property FROM table1 LEFT JOIN tabl2 ON table2.id=table1.id ORDER BY RAND(table1.id)

почему так тебе не поможет??? Расставь индексы правельно...

З.Ы. если я не полный дурак, то по моему, выбор по ебъединению быстрее чем по проверке в WHERE .....

А по поводу нагрузки, у меня скрипт обрабатыват порядка 2000 строк из бд, на это уходит около 20 запросов, и скрипт выполняется в среднем на локалке от 0,2 - 0,5 ... вот!

В теории БД почитай про нормализацию.
 

Falc

Новичок
>>если я не полный дурак, то по моему, выбор по ебъединению быстрее чем по проверке в WHERE .....

Что в твоем понимании "выбор по ебъединению"? И что "по проверке в WHERE"?

>>В теории БД почитай про нормализацию.

Это так, для красного словца добавил?
 

AdminGorkyRu

Новичок
>>Что в твоем понимании "выбор по ебъединению"? И что "по проверке в WHERE"?

По объединению - используя конструкцию JOIN, по проверке - table1 AS T1, tabl2 AS T2 ... WHERE T1.id=T2.id

>>Это так, для красного словца добавил?
нет.. а что тут особо красноречивого?

З.Ы. не хочеться чтоб мои слова как понт воспринимались... :(
 

Falc

Новичок
>>По объединению - используя конструкцию JOIN, по проверке - table1 AS T1, tabl2 AS T2 ... WHERE T1.id=T2.id

Объединение это совсем не JOIN, а UNION. JOIN - это соединение.

Читаем ман:
http://dev.mysql.com/doc/mysql/ru/JOIN.html
"INNER JOIN и , (запятая) являются семантическими эквивалентами. Оба осуществляют полное объединение используемых таблиц. Способ связывания таблиц обычно задается в условии WHERE."

Так что не важно как ты свяжешь таблицы перечислив их через запятую и задав условие связывания в WHERE или через JOIN table ON cond - это будет эквивалентно и на скорости никак не скажется.
 

REMO

Guest
Автор оригинала: Falc
>>По объединению - используя конструкцию JOIN, по проверке - table1 AS T1, tabl2 AS T2 ... WHERE T1.id=T2.id

Объединение это совсем не JOIN, а UNION. JOIN - это соединение.

Читаем ман:
http://dev.mysql.com/doc/mysql/ru/JOIN.html
"INNER JOIN и , (запятая) являются семантическими эквивалентами. Оба осуществляют полное объединение используемых таблиц. Способ связывания таблиц обычно задается в условии WHERE."

Так что не важно как ты свяжешь таблицы перечислив их через запятую и задав условие связывания в WHERE или через JOIN table ON cond - это будет эквивалентно и на скорости никак не скажется.
А LEFT JOIN?
 

Falc

Новичок
REMO
Что "LEFT JOIN"
Про него читать там же и еще в разделе про оптимизацию:
http://dev.mysql.com/doc/mysql/ru/LEFT_JOIN_optimisation.html

Тебя кстати туда уже посылали в соседней ветке.
 

Falc

Новичок
AdminGorkyRu
>>это все написанное тобой я знаю...

Тогда к чему твое высказывание:
"по моему, выбор по ебъединению быстрее чем по проверке в WHERE ....."

???
 

AdminGorkyRu

Новичок
я ошибся просто.... :(.. у меня есть книжка Леона Аткинсона про MySQL .. вот там подряд два таких листинга идут (6.12 и 6.13 кому интересно)... и у меня в памяти отложилось, что разница есть... щас перечитал - нет разницы.. :(..
 
Сверху