|
Помогите разобраться с темой ключевых слов ANY и ALL
|
|||
---|---|---|---|
#18+
Dante80 booby, Я сформулировал свой вопрос по данной теме. Что если будут сравниваться 2 множества, как в данных примерах которые я указывал в теме? Вы привели пример сравнения переменной с множеством, а в какой последовательности будет происходить сравнение двух множеств? Приведу первый пример из данной темы: WHERE type = 'pc' AND NOT model = ANY (SELECT model FROM PC ); Сравнивается множество Product.model с множеством из другой таблицы PC.model. Каким образом происходит взаимодействие между этими двумя множествами? Как я предполагаю, берется первый элемент из Product.model и сравнивается с каждым из элементов PC.model? И так по очереди? Меня сам процесс сравнения между множествами интересует в данном примере. Если подселект SELECT model FROM PC так как он тут приведен (без проброса внешнего условия вовнутрь) то да, так или иначе, но на каждую выборку записи основного запроса Мускуль (да и любая иная СУБД) будет производить поиск в множестве значений подзапроса. Оптимизировать тут, как понимаю можно только предвыборку данных подзапроса, сложив например во временную табличку .. опять же зависит от размера. Любые варианты с OR в списке условий (явно или завуалировано) кмк всегда работают хуже чем инвертированное условие и AND, но такое не всегда возможно. Если OR не велик, то кмк предпочтительнее UNION. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 09:03 |
|
Помогите разобраться с темой ключевых слов ANY и ALL
|
|||
---|---|---|---|
#18+
Dante80Как я предполагаю, берется первый элемент из Product.model и сравнивается с каждым из элементов PC.model? И так по очереди?да, до первого TRUE в случае ANY Dante80Что если будут сравниваться 2 множества, как в данных примерах которые я указывал в теме? Вы привели пример сравнения переменной с множеством, а в какой последовательности будет происходить сравнение двух множеств?без ORDER BY для таблицы (множества) порядок не гарантирован в БД, т.е как будет сравнивать БД - сказать определенно нельзя. Скажем так - как лежат данные на "диске" - так и будет сравнивать, а как они лежат - неизвестно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 20:09 |
|
|
start [/forum/topic.php?fid=47&startmsg=40032498&tid=1828255]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
131ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 235ms |
0 / 0 |