|
фильтр where
|
|||
---|---|---|---|
#18+
Здравствуйте. Видно слегка не догоняю с арифметикой where есть такой запрос Код: sql 1. 2. 3. 4.
он собственно выдал честно все записи, в которых m.d = 3 и j.gg = 6. а вот m.c получился не только равный 6 Не догоняю почему. даже с учетом скобок а вот такой вот запрос Код: sql 1. 2. 3. 4.
выдал все записи m.d = 3 и сджойнил main_test_join по условию, но j.gg = 6 по сути вроде как не учитывалось. и выдало все, что есть во второй таблице по условию связи таблиц а вот такой вот запрос Код: sql 1. 2. 3. 4.
честно выдал одну запись по условию m.d = 3 and m.c = 6 собственно хочу понять почему в первом и третьем запросах так разнятся выходные данные. по логике в третьем запросе при выборке из main_test сразу фильтруется по m.d = 3 and m.c = 6, а потом уже join. А вот почему такие результаты странные в первом запросе? хотелось бы понять какую логику фильтрации сервер применяет в первом запросе ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2019, 16:52 |
|
фильтр where
|
|||
---|---|---|---|
#18+
Сам же и отвечу) надеюсь верно Это ж получается с and и or цельное условие. И в случае наличия только and сервер перенес фильтрацию на уровень после выборки из основной таблицы (на правах оптимизации) до join. А в случае наличия и and и or сервер уже фильтровал полностью результат поле join. По этому и по M идет natural ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2019, 17:01 |
|
|
start [/forum/topic.php?fid=40&msg=39784083&tid=1560786]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
85ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 311ms |
total: | 497ms |
0 / 0 |