Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / 1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе? / 10 сообщений из 10, страница 1 из 1
29.10.2008, 10:30
    #35622131
Лисонька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
Леди и джентельмены!
Не сочтите ворос совсем уж глупым, но очень хотелось бы узнать: влияют ли на скорость выборки порядок расположения условий в WHERE?
Просто пример:

Код: plaintext
1.
2.
SELECT * FROM table1 INNER JOIN ... ON ... WHERE DELETED()=.f. ;
                     AND table1.nnomer=VAL(thisform.cmbSort.DisplayValue) ;
                     INTO CURSOR TmpCursor
или
Код: plaintext
1.
2.
SELECT * FROM table1 INNER JOIN ... ON ... ;
                     WHERE table1.nnomer=VAL(thisform.cmbSort.DisplayValue) AND DELETED()=.f. ;
                     INTO CURSOR TmpCursor

В больших таблицах это имеет значение?
Благодарю
...
Рейтинг: 0 / 0
29.10.2008, 10:44
    #35622173
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
> Автор: Лисонька
> Леди и джентельмены!
> Не сочтите ворос совсем уж глупым, но очень хотелось бы узнать: влияют ли на скорость выборки порядок
> расположения условий в WHERE?
> В больших таблицах это имеет значение?


Теоретически сначала нужно ставить условия, которые предположительно максимально ограничивают результат, а практически
этим занимается оптимизатор

На твоем примере если по DELETED()=.f. будет меньшее количество записей в результате, то его первым, иначе вторым

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
29.10.2008, 10:44
    #35622175
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
> Автор: Лисонька
> Леди и джентельмены!
> Не сочтите ворос совсем уж глупым, но очень хотелось бы узнать:
> влияют ли на скорость выборки порядок расположения условий в WHERE?

Sys(3054) тебе в помощь.

А вообще сначала надо ставить условия, которые могут быть оптимизированны по
индексам, а потом те, которые по индексу не оптимизируются.


В частности dele()=.f. - так не пишут. Set dele on и вперед (в крайнем
случае !dele())


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
29.10.2008, 11:30
    #35622327
Лисонька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
Честно говоря, привела нехороший пример кода - первое, что пришло в голову. SET DELETE ON у меня стоит в первых строках LOAD каждой формы, работающей с таблицами.
Значит, насколько я поняла, выборка работает всеми условиями WHERE не с каждой отдельной записью, а каждое условие отрабатывает по целой таблице.
Да, тогда логично, чтобы вначале стояло условие, минимизирующее число отбираемых записей.
Благодарю всех-всех-всех!

Елизавета Скрунскайте
...
Рейтинг: 0 / 0
29.10.2008, 11:50
    #35622409
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
> Честно говоря, привела нехороший пример кода .... 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
...
Рейтинг: 0 / 0
29.10.2008, 11:54
    #35622427
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
> Точно знаю, что если для записи ПЕРВОЕ условие не выполнилось, то
> проверка
> остальных НЕ производится.


Чуть поправлю:

A, B, C - условия

В строке:
A and B and C

Если условие A - ложно, то условия B и С проверятся не будут

А в случае:
A or B or C

Если условие A - ИСТИНО, то условия B и С проверятся не будут.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
29.10.2008, 12:10
    #35622500
Лисонька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
Galyamov Rinat
> Точно знаю, что если для записи ПЕРВОЕ условие не выполнилось, то
> проверка
> остальных НЕ производится.
Чуть поправлю:
A, B, C - условия
В строке:
A and B and C
Если условие A - ложно, то условия B и С проверятся не будут
А в случае:
A or B or C
Если условие A - ИСТИНО, то условия B и С проверятся не будут.


Обижаете! ;-)
Разницу между AND/OR и последствиях их неправильного приложения к данному конкретному случаю в программном коде когда-то давным-давно на уроке информатики твердо вдолбил мне в мозги наш программист - Матвеев Александр Валентинович, работающий в настоящее время в Москве системным админом в какой-то крупной фирме.
Может случаем кто знает этого А.В. Матевеева? )))
...
Рейтинг: 0 / 0
29.10.2008, 23:31
    #35624259
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
Лисонька ...Может случаем кто знает этого А.В. Матевеева?
Случаем - нет... sorry...
...
Рейтинг: 0 / 0
29.10.2008, 23:41
    #35624267
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
ЛисонькаРазницу между AND/OR и последствиях их неправильного приложения к данному конкретному случаю в программном коде когда-то давным-давно на уроке информатики твердо вдолбил мне в мозги наш программист
Так он вдолбил по поводу интерпретаторов или компиляторов? Ибо Фокс - интерпретатор, что однозначно и определяет его "логику действий" при проверке условий. Кстати, где вы еще найдёте конструкцию вида IF type('aa')<>'U' .and. type('aa(1)')='N' .and. aa(1)=5 ...
...
Рейтинг: 0 / 0
30.10.2008, 08:19
    #35624459
Лисонька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе?
AndreTMТак он вдолбил по поводу интерпретаторов или компиляторов? Ибо Фокс - интерпретатор, что однозначно и определяет его "логику действий" при проверке условий. Кстати, где вы еще найдёте конструкцию вида IF type('aa')<>'U' .and. type('aa(1)')='N' .and. aa(1)=5 ...
Ну не утрируйте, пожалуйста ;)
Простой факультатив по информатике. А объяснял он нам не школьную программу, а иногда заносился в такие дебри! Это если учесть, что из компов у нас были только "АГАТЫ" (кто помнит?)))))))))
Утрирую тоже: иногда он объяснял нам примеры (условия, ветвление, циклы) как Чапаев на картошке.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / 1-й класс: от перемены мест слагаемых сумма не меняется. А в запросе? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]