Имя: Пароль:
1C
1С v8
Условие в запросе при выборке основной таблицы регистра
0 vi0
 
17.02.13
18:03
А.П.Габец "Профессиональная разработка в системе 1с" 2006
стр.718
"выполнение такого запроса приведет к тому, что будут ВЫБРАНЫ все записи движений регистра, а затем путем перебора этих записей"

Кто может объяснить, что значит "выбраны все записи"? Куда выбраны? Может быть это опечатка?

http://s1.ipicture.ru/uploads/20130217/7qN0nBDH.gif
1 sanja26
 
17.02.13
18:08
будут выбраны в память...)
2 MrStomak
 
17.02.13
18:14
Запрос имеет план выполнения. Выделенное действие - это полный скан таблицы, т.е. для получения результата будет наложена блокировка на всю таблицу, последовательно будут обойдены все строки таблицы и к каждой строке будет применяться условие. Это, начиная с определенной селективности условия, очень замедляет выполнение запроса.
3 vi0
 
17.02.13
18:17
согласен, но текст книги несколько иначе это описывает: сначала выбираем все записи, потом путем их перебора ...
4 rphosts
 
17.02.13
18:21
(0) значит что т.к. измерение Склад не индексированно - для выполнения этого запроса бдет польностью прочитана таблица движений регистра с дискового накопителя
5 MrStomak
 
17.02.13
18:24
(3) ну на уровне SQL так и будет.
6 vi0
 
17.02.13
18:26
(5) записи будут выбраны куда?

мне кажется, более правильная формулировка  будет "выполнение такого запроса приведет к тому, что будут заблокированы все записи движений регистра, а затем путем перебора этих записей.."
7 rphosts
 
17.02.13
18:27
(6) при чтнии не происходит блокировки таблицы.
8 rphosts
 
17.02.13
18:27
(6) прочитаны в память
9 MrStomak
 
17.02.13
18:29
(7) о каком уровне изоляции транзакций говорим?
10 rphosts
 
17.02.13
18:34
(9) кста, да, есть варианты
11 vi0
 
18.02.13
12:33
(8) что значит прочитаны в память? а если в регистре данные за несколько лет?
12 Тролль главный
 
18.02.13
12:40
насчет блокировки всей таблицы это еще проверить надо
13 Defender aka LINN
 
18.02.13
12:54
(11) Полагаешь, SQL-серверу есть дело до того, что в таблице лежит и за какой период?
14 vi0
 
18.02.13
13:32
нет, я имею ввиду, что было бы странно если при выполнении такого запроса sql выбирал бы все данные в какой-то промежуточный буфер
ВЫБРАТЬ
Поле1
ИЗ
Таблица1
ГДЕ
Поле2 = &Поле2