|
|
|
for select if exists против join
|
|||
|---|---|---|---|
|
#18+
Привет, как праздники? А я почти не пил, поэтому вопрос. Я тут опять с нерелятивистскими подходами! вот пишу так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Не подскажете ли, когда это все скомпилируется, будет ли это равно такой структуре: Код: plaintext 1. 2. 3. 4. ??? Зачем я опять мудрю? Ну по неопытности. Во-первых, поскольку я пока плохо знаю, как join соптимизируется: будет ли он по очереди брать следующую строку, которую выводит mysp и проверять, есть ли соответствующая запись в таблице tbl, или он будет брать следующую запись из tbl и проверять соответствие в какой-то временной таблице, где будет результат mysqp? Во-вторых, сохранится ли порядок, в каком выводились строки в mysp? Ведь в принципе, поскольку я никакого явного order во втором примере не поставил, только неточное знание того, как работает разборщик запросов, будет гарантировать мне желаемый порядок. А первый пример - я явно заставляю сохранять порядок. В принципе, вопрос в том числе и по скорости работы первого и второго вариантов (мне на первый взгляд кажется, что это одно и тоже, и что именно так должен работать join). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2003, 18:46 |
|
||
|
for select if exists против join
|
|||
|---|---|---|---|
|
#18+
Скорее всего соединение будет быстрее, если есть индексы, конечно. Если хочешь - проверь количество обращений к таблицам в статистике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2003, 12:13 |
|
||
|
for select if exists против join
|
|||
|---|---|---|---|
|
#18+
Статистикой пока не умею пользоваться. Где читать? А про то что будет быстрее, думал мож кто сразу знает, может на BLR кто программирует.. Может, и мне посоветуешь спросить на news://forums.demo.ru/epsylon.public.interbase ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2003, 17:40 |
|
||
|
for select if exists против join
|
|||
|---|---|---|---|
|
#18+
Не, на news с такими вопросами не ходи :-))) Туда только если что-то серьёзное. Возьми IBExpert и там тебе вся статистика прямо графиками будет показываться. если построены индексы по полям и они использкются, то join будет быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2003, 18:07 |
|
||
|
for select if exists против join
|
|||
|---|---|---|---|
|
#18+
А у меня все серьезно, это просто у меня голос такой Я, слава Богу, не задаю уже лет шесть вопросы типа "как вывести максимальное значение для каждой даты". Ясно, что с радостью мне на такой вопрос все бы ответили, да и я сам тоже :) А кстати у меня вопрос-то не только по скорости но и про сохранение порядка, в котором выдает mysp. Ведь, наксолько я понимаю, когда делается джоин, то сервер тоже идет по первой таблице, смотрит, подходит ли запись под все условия, если среди условий есть сравнение с полем другой таблицы, находит по индексу быстренько запись, сравнивает, если подходит - выдает в ответ. Если не подходит, бросает эту запись и берет следующую запись. То есть я думаю , что сервер так поступает. Я прочитал про свой ранее любимый mysql (прямо в справке - очень хорошая там справка), что он именно так и делает, и решил, что так все делают, потому что это логично. Но ведь может быть и не так. Например, сервер сначала берет все таблицы, берет все строки во временную таблицу, которые возвращает mysp, а потом джоинит эту таблицу как привык, так, как если бы это была обычная таблица без индекса... и тогда порядок сохраниться вовсе не должен, а мне надо чтобы сохранился. Ну, спасибо, что дочитал! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2003, 18:43 |
|
||
|
for select if exists против join
|
|||
|---|---|---|---|
|
#18+
даже сервер от моих вопросов грохнулся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2003, 18:46 |
|
||
|
for select if exists против join
|
|||
|---|---|---|---|
|
#18+
Для порядка - order by есть, е что до порядка таблиц - не знаю. Наверное для левого и правого соединения есть ведущая таблица, а для других - не знаю, как оно там, да и какая разница. Да и вобще, насколько я помню, если в запросе учавствуют отношения (типа таблицы и представления), то сначала выполняется соединение по значениям индекса, а потом на основании этого соединения вытаскиваются данные. Как-то так оно делается. Поэтому нельзя и ХП соединять кроме как левым способом :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2003, 18:55 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32183601&tid=1580370]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 449ms |

| 0 / 0 |
