|
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
|
|||
---|---|---|---|
#18+
Леди и джентельмены! Не сочтите ворос совсем уж глупым, но очень хотелось бы узнать: влияют ли на скорость выборки порядок расположения условий в WHERE? Просто пример: Код: plaintext 1. 2.
Код: plaintext 1. 2.
В больших таблицах это имеет значение? Благодарю ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 10:30 |
|
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
|
|||
---|---|---|---|
#18+
> Автор: Лисонька > Леди и джентельмены! > Не сочтите ворос совсем уж глупым, но очень хотелось бы узнать: влияют ли на скорость выборки порядок > расположения условий в WHERE? > В больших таблицах это имеет значение? Теоретически сначала нужно ставить условия, которые предположительно максимально ограничивают результат, а практически этим занимается оптимизатор На твоем примере если по DELETED()=.f. будет меньшее количество записей в результате, то его первым, иначе вторым -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 10:44 |
|
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
|
|||
---|---|---|---|
#18+
> Автор: Лисонька > Леди и джентельмены! > Не сочтите ворос совсем уж глупым, но очень хотелось бы узнать: > влияют ли на скорость выборки порядок расположения условий в WHERE? Sys(3054) тебе в помощь. А вообще сначала надо ставить условия, которые могут быть оптимизированны по индексам, а потом те, которые по индексу не оптимизируются. В частности dele()=.f. - так не пишут. Set dele on и вперед (в крайнем случае !dele()) Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 10:44 |
|
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
|
|||
---|---|---|---|
#18+
Честно говоря, привела нехороший пример кода - первое, что пришло в голову. SET DELETE ON у меня стоит в первых строках LOAD каждой формы, работающей с таблицами. Значит, насколько я поняла, выборка работает всеми условиями WHERE не с каждой отдельной записью, а каждое условие отрабатывает по целой таблице. Да, тогда логично, чтобы вначале стояло условие, минимизирующее число отбираемых записей. Благодарю всех-всех-всех! Елизавета Скрунскайте ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 11:30 |
|
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
|
|||
---|---|---|---|
#18+
> Честно говоря, привела нехороший пример кода .... SET DELETE ON у > меня стоит в первых строках LOAD каждой формы, работающей с таблицами. Тоже не правильно. Лучше все set`ы, которые распространяются на текущую сессию данных вынести в отдельную процедуру и в лоаде ее вызывать, а не писать в каждой форме конкретные set`ы. А еще правильнее сделать свой класс формы, где в load прописать вызов этой процедуры по условию, что форма запускается в приватной сессии данных. > Значит, насколько я поняла, выборка работает всеми условиями WHERE не > с каждой отдельной записью, а каждое условие отрабатывает по целой > таблице. Оптимизатор - черный ящик. Что и как он делает внутри известно не многим.. Точно знаю, что если для записи ПЕРВОЕ условие не выполнилось, то проверка остальных НЕ производится. Так же как и здесь: IF MESSAGEBOX('Показать второй вопрос?',4)=6 AND MESSAGEBOX('ЭТО второй вопрос?',4)=6 MESSAGEBOX('Вы ответили на оба вопроса утвердительно') ENDIF Сообщение "ЭТО второй вопрос?" можно увидеть только при выполнении первого условия (нажать "да" при первом вопросе) > Да, тогда логично, чтобы вначале стояло условие, минимизирующее число > отбираемых записей. И при этом БЫСТРО минимизирующее - т.е. оптимизируемое по индексам. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 11:50 |
|
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
|
|||
---|---|---|---|
#18+
> Точно знаю, что если для записи ПЕРВОЕ условие не выполнилось, то > проверка > остальных НЕ производится. Чуть поправлю: A, B, C - условия В строке: A and B and C Если условие A - ложно, то условия B и С проверятся не будут А в случае: A or B or C Если условие A - ИСТИНО, то условия B и С проверятся не будут. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 11:54 |
|
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
|
|||
---|---|---|---|
#18+
Galyamov Rinat > Точно знаю, что если для записи ПЕРВОЕ условие не выполнилось, то > проверка > остальных НЕ производится. Чуть поправлю: A, B, C - условия В строке: A and B and C Если условие A - ложно, то условия B и С проверятся не будут А в случае: A or B or C Если условие A - ИСТИНО, то условия B и С проверятся не будут. Обижаете! ;-) Разницу между AND/OR и последствиях их неправильного приложения к данному конкретному случаю в программном коде когда-то давным-давно на уроке информатики твердо вдолбил мне в мозги наш программист - Матвеев Александр Валентинович, работающий в настоящее время в Москве системным админом в какой-то крупной фирме. Может случаем кто знает этого А.В. Матевеева? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 12:10 |
|
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
|
|||
---|---|---|---|
#18+
Лисонька ...Может случаем кто знает этого А.В. Матевеева? Случаем - нет... sorry... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 23:31 |
|
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
|
|||
---|---|---|---|
#18+
ЛисонькаРазницу между AND/OR и последствиях их неправильного приложения к данному конкретному случаю в программном коде когда-то давным-давно на уроке информатики твердо вдолбил мне в мозги наш программист Так он вдолбил по поводу интерпретаторов или компиляторов? Ибо Фокс - интерпретатор, что однозначно и определяет его "логику действий" при проверке условий. Кстати, где вы еще найдёте конструкцию вида IF type('aa')<>'U' .and. type('aa(1)')='N' .and. aa(1)=5 ... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 23:41 |
|
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
|
|||
---|---|---|---|
#18+
AndreTMТак он вдолбил по поводу интерпретаторов или компиляторов? Ибо Фокс - интерпретатор, что однозначно и определяет его "логику действий" при проверке условий. Кстати, где вы еще найдёте конструкцию вида IF type('aa')<>'U' .and. type('aa(1)')='N' .and. aa(1)=5 ... Ну не утрируйте, пожалуйста ;) Простой факультатив по информатике. А объяснял он нам не школьную программу, а иногда заносился в такие дебри! Это если учесть, что из компов у нас были только "АГАТЫ" (кто помнит?))))))))) Утрирую тоже: иногда он объяснял нам примеры (условия, ветвление, циклы) как Чапаев на картошке. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 08:19 |
|
|
start [/forum/topic.php?fid=41&msg=35622409&tid=1587131]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 326ms |
total: | 486ms |
0 / 0 |