|
|
|
Соединения таблиц
|
|||
|---|---|---|---|
|
#18+
Хочу сравнить скорость работы Код: plaintext Код: plaintext Интересует случай, когда условие соединения простое равенство. В случае когда оба поля проиндексированы только у одной таблицы ни у кого С уважением, Naf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2008, 18:30 |
|
||
|
Соединения таблиц
|
|||
|---|---|---|---|
|
#18+
NafХочу сравнить скорость работы Ответ очевиден. Скорость будет либо одинаковая, либо LEFT JOIN будет медленне. Само собой, всякие ошибки оптимизатора - не рассматриваем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2008, 18:33 |
|
||
|
Соединения таблиц
|
|||
|---|---|---|---|
|
#18+
Naf wrote: > . Понимаю что суть разные вещи, но допустим мы уверены, что *NULL* мы не > получим (допустим есть ограничение). LEFT JOIN потенциаольно может быть медленнее, но не всегда. Почему - A JOIN B может выполняться физически как A JOIN B или как B JOIN A. A LEFT JOIN B может выполняться только как A LEFT JOIN B, т.е. внешней таблицей будет только A (тут правда есть нюансы, когда вы реально применяете не внешнее соединение). Т.е. условия фильтрации по B применяться эффективно не могут. Т.е. например у вас есть запрос Код: plaintext 1. 2. 3. на B.fld1 есть индекс, и условие B.fld1 = XXX возвращает напр. 10 записей, то всё равно скорее всего таблица A будет сканироваться целиком. >Что тогда выбирать? В смысле ? Это ж разные операции, какая вам по логике нужна, ту и выбирайте. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2008, 19:15 |
|
||
|
Соединения таблиц
|
|||
|---|---|---|---|
|
#18+
MasterZiv В смысле ? Это ж разные операции, какая вам по логике нужна, ту и выбирайте. я же и пишу, что ситуация такова, что результат одинаков будет гарнтировано. Спасибо, что ответили. Можете более подробно описать алгоритм работы LEFT и INNER, на уровне работы сервера БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 11:25 |
|
||
|
Соединения таблиц
|
|||
|---|---|---|---|
|
#18+
MasterZivТ.е. условия фильтрации по B применяться эффективно не могут. Т.е. например у вас есть запрос Код: plaintext 1. 2. 3. на B.fld1 есть индекс, и условие B.fld1 = XXX возвращает напр. 10 записей, то всё равно скорее всего таблица A будет сканироваться целиком.Таблица А будет сканироваться целиком независимо от чего бы то ни было в таблице В, т.к. запрос обязан вернуть все записи из таблицы А. А вот условия фильтрации по В применяться эффективно вполне могут, достаточно создать нужный индекс. В данном примере - (fld1, key). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 12:11 |
|
||
|
Соединения таблиц
|
|||
|---|---|---|---|
|
#18+
NafМожете более подробно описать алгоритм работы LEFT и INNER, на уровне работы сервера БДЧитайте доки по конкретным СУБД. Этих алгоритмов много. Кроме того, ряд СУБД умеет соединять таблицы по разным алгоритмам, в зависимости от решения оптимизатора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 12:13 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35622306&tid=1543599]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
179ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 516ms |

| 0 / 0 |
