![]() |
![]() |
![]() |
|
v8: Почему запрос лучше выборки из языка? | ☑ | ||
---|---|---|---|---|
0
budanila
27.01.10
✎
14:39
|
помню когда начинал изучать 1с8 читал что запрос предпочтительней простых выборок. типо запрос сразу в оперативку загружаецо а выборка по 5 записей.. ну и прочие сравнения выборки и запроса. Напомните пожалуйста, у кого с памятью лучше.... энто где найти мну))))
|
|||
1
budanila
27.01.10
✎
15:15
|
опаньки)))
|
|||
2
ДенисЧ
27.01.10
✎
15:19
|
||||
3
Ненавижу 1С
гуру
27.01.10
✎
15:30
|
На собеседование ходил?
|
|||
4
Hazer79
27.01.10
✎
15:30
|
(0) Насколько я помню, как на курсах объясняли, выборка из языка всё равно транслируется в запрос...
Вроде так. |
|||
5
Mitriy
27.01.10
✎
15:34
|
(0) выборкой данных ты вытаскиваешь все поля, а выборкой из результата запроса ты можешь вытащить только то, что тебе точно нужно...
|
|||
6
Shurjk
27.01.10
✎
15:39
|
И началось, еще версии есть.
(0) На самом деле не всегда предпочтительней, все зависит от контекста использования. |
|||
7
Ненавижу 1С
гуру
27.01.10
✎
15:41
|
(6) давай примеры контекстов
|
|||
8
Mitriy
27.01.10
✎
15:42
|
(6) ты что-то можешь добавить к (5)?
|
|||
9
ERWINS
27.01.10
✎
15:42
|
предпочтительней из языка если ты выбираешь не больше 3 записей
или выбираешь почти одно и тоже проверено на 8.1 если же выбираешь 50 то запрос и проще и быстрее |
|||
10
ERWINS
27.01.10
✎
15:43
|
например выбрать одну запись из регистра сведений
|
|||
11
H A D G E H O G s
27.01.10
✎
15:45
|
Так.
Всем запомнить. Запросы - как максимум лучше, как минимум - также, что и выборка. Баянище. |
|||
12
Shurjk
27.01.10
✎
15:48
|
(7) Ответы в (0) есть, там же написано что выборка которая получается запросом выбирается 1 раз, а просто выборка является динамической, т.е. в случае если вы выбираете значения которые могут измениться с момента выборки предпочтительней использовать простую выборку. Опять же как верно подмечено она и памяти меньше расходует, но выборка запросом работает быстрее.
|
|||
13
ERWINS
27.01.10
✎
15:51
|
(12) я проводил тест выборка с запросом работала на порядок медленее в 10 раз
на 8.1 |
|||
14
Dirk Diggler
27.01.10
✎
15:51
|
(11) как составить запрос чтоб работал так же быстро как выборка для 1 элемента?
|
|||
15
Aprobator
27.01.10
✎
15:54
|
(14) гы:
|
|||
16
ERWINS
27.01.10
✎
15:56
|
задача была такой
есть регистр сведений из сотен миллионов позиций почти случайно из него выбираются по ключу значения каждую секунду или около того очень часто выбираются одни и те же данные (но не всегда) Запрос повалил систему (не успевала выдавать данные) даже при одном пользователе выбор из регстра нормально похал для 10ти |
|||
17
Ненавижу 1С
гуру
27.01.10
✎
15:58
|
(16) интересно почему?
|
|||
18
H A D G E H O G s
27.01.10
✎
15:58
|
(14) Выбрать Первые 1
|
|||
19
H A D G E H O G s
27.01.10
✎
16:02
|
(16) Кот в студию!
|
|||
20
DUDE
27.01.10
✎
16:03
|
В ЕСИС(в разделе ИТС метод. рекоменд. по конф-ю) написано, что выборка порциями по 25 объектов делается. Так что она более щадяща к объему требуемой ОЗУ, но и медленней. Ну это уточнение к (0). Тебе дорога на ИТС, товарищ :)
|
|||
21
H A D G E H O G s
27.01.10
✎
16:05
|
(20) Без базара - сделаем запрос порциями по 25 записей и только с НУЖНЫМИ полями. Он будет ЕЩЕ более щадящим к памяти и к SQL серверу.
|
|||
22
budanila
27.01.10
✎
16:05
|
(3) на собеседование не ходил))) просто личный интерес)
А кто так извращаецо что имена мистовчан по вертикали отображаются а не по горизонтали? Я знаю что запрос быстрей намного и во многих случаях предпочтительней... но описать все причины этого не могу))) короче как собака - хвастом виляю.... |
|||
23
Megas
27.01.10
✎
16:08
|
(16) Для чего ? просто оч интересно ...
|
|||
24
ERWINS
27.01.10
✎
16:11
|
(23) данные передавались на принтер
|
|||
25
DUDE
27.01.10
✎
16:14
|
(20) Да я не спорю. :) Просто уточнил, коль как раз сегодня на глаза цифра попалась :)
|
|||
26
acsent
27.01.10
✎
16:26
|
(21) По простому не сделаешь.
Выборка уместна если например нужно обработать все документы |
|||
27
ERWINS
27.01.10
✎
16:31
|
данные выбранные из запрса не кешируются...
а результат выбора из регистра кешируется |
|||
28
H A D G E H O G s
27.01.10
✎
16:39
|
(27) Индексированная ТЗ спасет отца русской демократии.
P.S. Читать литературу о времени жизни такого кэша и его очистке при заполнении. (26) Если только перезаписать, тоесть везде, где надо ПолучитьОбъект(). И всё. |
|||
29
ERWINS
27.01.10
✎
16:40
|
(28) тз на 100 000 000 позиций?
|
|||
30
H A D G E H O G s
27.01.10
✎
16:46
|
(29) Ну да.
P.S. Можно добавить ДатаВремя и чистить периодически "давно не тронутые". Ты код Выборки/Запроса покажи. |
|||
31
H A D G E H O G s
27.01.10
✎
16:47
|
(29) Я сомневаюсь, что ТЗ у тебя полностью заполниться хоть когда-то.
|
|||
32
MRAK
27.01.10
✎
16:48
|
На файловой базе объект Запрос создается ГОРАЗДО медленнее, чем выборка. Тестировал давно, еще на 8.0. Сейчас наврядли что поменялось.
|
|||
33
ERWINS
27.01.10
✎
16:55
|
регистр сведений
код(40 символов) значение(40 символов) в день разных где то 100 000 нафиг геморой с собственным кешированием? |
|||
34
H A D G E H O G s
27.01.10
✎
16:57
|
(33) 1С:Предприятие 8.1 (8.1.14.72)/ "Управление торговлей", редакция 10.3 (10.3.3.3)
ЗАПРОС Выборка=Запрос.Выполнить().Выбрать(); 1 0,000655 90,74 Запрос=Новый Запрос; 1 0,000037 5,13 Запрос.Текст= 1 0,000014 1,90 Выборка.Следующий(); 1 0,000006 0,89 Наим=Выборка.Наименование; 1 0,000006 0,86 КонецПроцедуры 1 0,000002 0,24 ВЫБОРКА Выборка.Следующий(); 1 0,025279 94,37 Выборка=Справочники.Номенклатура.Выбрать(); 1 0,001494 5,58 Наим=Выборка.Наименование; 1 0,000010 0,04 КонецПроцедуры 1 0,000002 0,01 |
|||
35
H A D G E H O G s
27.01.10
✎
17:06
|
Миль пардон.
Был необъективен. - база была с 2 элементами номенклатуры, тестовая. Вот 1С: Управление производственным предприятием+Ликероводочный и винный завод, редакция 1.2 (1.2.7.2.103), файловая, размер справочника 26 498 эл. ЗАПРОС Выборка=Запрос.Выполнить().Выбрать(); 1 0,017219 99,58 Запрос=Новый Запрос; 1 0,000039 0,23 Запрос.Текст= 1 0,000015 0,08 Наим=Выборка.Наименование; 1 0,000007 0,04 Выборка.Следующий(); 1 0,000007 0,04 КонецПроцедуры 1 0,000003 0,01 ВЫБОРКА Выборка.Следующий(); 1 0,350581 94,97 Выборка=Справочники.Номенклатура.Выбрать(); 1 0,018561 5,03 Наим=Выборка.Наименование; 1 0,000012 КонецПроцедуры 1 0,000002 |
|||
36
H A D G E H O G s
27.01.10
✎
17:08
|
(33) <<Код 40 символов>>
Фигасебе.. А типа хэша прикрутить - никак? |
|||
37
H A D G E H O G s
27.01.10
✎
17:13
|
(36) Хотя нет, я муть порю. Хэши дают коллизии.
|
|||
38
MRAK
27.01.10
✎
17:20
|
(35)
УТ 10.2, платформа 8.1.13.37 Форма.Форма 8 Запрос = Новый Запрос; 1 0,000037 0,01 Форма.Форма 9 Запрос.Текст = "ВЫБРАТЬ 1 0,000016 Форма.Форма 14 Выборка = Запрос.Выполнить().Выбрать(); 1 0,492219 96,91 Форма.Форма 15 Пока Выборка.Следующий() Цикл 1 0,000009 Форма.Форма 16 Сообщить(Выборка.Ссылка); 1 0,015626 3,08 Форма.Форма 23 Выборка = Справочники.Номенклатура.Выбрать(); 1 0,000973 0,59 Форма.Форма 24 Пока Выборка.Следующий() Цикл 1 0,151836 92,82 Форма.Форма 25 Сообщить(Выборка.Ссылка); 1 0,010769 6,58 |
|||
39
MRAK
27.01.10
✎
17:21
|
(38) + текст запроса:
Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура"; |
|||
40
H A D G E H O G s
27.01.10
✎
17:27
|
(39) Размер справочника?
|
|||
41
fisher
27.01.10
✎
17:27
|
Выборка вычитывает данные на клиента порциями, по мере её обхода.
Поэтому в толстой книге её рекомендуется использовать вместо запроса при обработке очень больших объемов данных (которые систему в состоянии конкретно пригрузить). А так смысла никакого нет для справочников и документов выборки использовать. |
|||
42
H A D G E H O G s
27.01.10
✎
17:31
|
(41) <<при обработке очень больших объемов данных>>
я рекомендую использовать Запрос (Выбрать Первые X) в цикле. |
|||
43
fisher
27.01.10
✎
17:34
|
(42) В смысле, эмулировать вычитку порциями? Не вижу смысла. Да, будешь выбирать только нужные поля. Но больше накладных расходов системы на вызов запросов из языка. Даже если и будет выигрыш по скорости, то не думаю что большой. В этой ситуации лично я сделаю выбор в пользу выборки. Просто потому, что так код наглядней и проще.
|
|||
44
H A D G E H O G s
27.01.10
✎
17:37
|
(43) <<Но больше накладных расходов системы на вызов запросов из языка>>
|
|||
45
H A D G E H O G s
27.01.10
✎
17:37
|
(44) +
Сфига ли? |
|||
46
H A D G E H O G s
27.01.10
✎
17:37
|
Особенно если выполнять на Сервере
|
|||
47
Жан Пердежон
27.01.10
✎
17:43
|
запрос только нужные поля тягает, а выборка - все
|
|||
48
fisher
27.01.10
✎
17:43
|
(45)
"Я так думаю" (с) Тестировать лень. (46) Выборку тоже на сервере можно обрабатывать :) |
|||
49
Nurik87
27.01.10
✎
17:46
|
(47)Запрос ведь получает ссылки или нет?
|
|||
50
MRAK
27.01.10
✎
17:48
|
(40) 16 352
|
|||
51
fisher
27.01.10
✎
17:48
|
Ну вот чуйка у меня, что нет особого смысла в собственной порционной вычитке в тех случаях, когда выборкой можно обойтись. Только морока.
Не, можно канешна запихать в объект стотыщ реквизитов и еще фильмов ему в хранилища значений засандалить. Тогда однозначно запрос рулить будет :) |
|||
52
Дикообразко
27.01.10
✎
17:52
|
(48) фигню написал ... для сервера что выборка, что запрос... один фиг запросом станет
|
|||
53
rsv
27.01.10
✎
17:52
|
(0) "Почему запрос лучше выборки из языка"
Что лучше - один select или 1000 селектов ?? |
|||
54
MRAK
27.01.10
✎
17:56
|
(49) смотря, как ты его напишешь. на скуле не могу сейчас протестировать, но в файле запрос чаще работает медленнее, чем выборка.
(47) см (39).если я добавлю еще Код и Наименование в Запрос, то он еще процентов на 40% тормознее исполняется. |
|||
55
MRAK
27.01.10
✎
17:57
|
(53) H A D G E H O G s в (42) как раз предлагает запрос в цикле.
|
|||
56
MRAK
27.01.10
✎
17:58
|
(54) + хотя мне все-равно запрос больше нравиться. Выборками практически не пользуюсь.
|
|||
57
Жан Пердежон
27.01.10
✎
18:04
|
(54) на файловой базе?
|
|||
58
H A D G E H O G s
27.01.10
✎
18:05
|
(51) <<и еще фильмов ему в хранилища значений засандалить>>
Не взлетит. Данные из хранилища не читаются до метода Получить() |
|||
59
H A D G E H O G s
27.01.10
✎
18:09
|
(50) Тогда полный код для теста ВЫБОРКИ приведи.
А то меня смущает строка << Форма.Форма 24 Пока Выборка.Следующий() Цикл 1 0,151836 92,82 >> А конкретно цифра 1 |
|||
60
fisher
27.01.10
✎
18:13
|
(58) Хм? Сам не пробовал. Но в толстой книжке написано что читаются. Поэтому настоятельно рекомендуется выносить их в регистр сведений.
|
|||
61
Bober
27.01.10
✎
18:38
|
(61) можешь проверить, создать ТЧ с реквизитом хранилище и положи туда 500 строк по 1мб. и посмотри с какой скоростью будет получиться объект.
|
|||
62
Bober
27.01.10
✎
18:41
|
(38) (39) в данных примерах нет отличий.
А вот если потребуются условия сложнеее "равно" и "и", то выборка уже проигрывает полностью. |
|||
63
Bober
27.01.10
✎
18:45
|
(41) это справедливо к любой выборке, СправочникВыборка или ВыборкаИзРезультатаЗапроса.
|
|||
64
Defender aka LINN
27.01.10
✎
19:08
|
(63) Наглая и бессовестная ложь
|
|||
65
Bober
27.01.10
✎
20:01
|
(64) Другова и не ожидал -)
|
|||
66
MRAK
27.01.10
✎
20:35
|
(59) не понял причем тут "1"...
вот тебе полный код обработки: Процедура ЗапросНажатие(Элемент) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура"; Выборка = Запрос.Выполнить().Выбрать(); Сообщить(Выборка.Количество()); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Ссылка); Прервать; КонецЦикла; КонецПроцедуры Процедура ВыборкаНажатие(Элемент) Выборка = Справочники.Номенклатура.Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Ссылка); Прервать; КонецЦикла; КонецПроцедуры |
|||
67
MRAK
27.01.10
✎
20:36
|
(62) блин, не читатель чтоль?
никто и не отрицает, что Выборка лажа и неологизм |
|||
68
MRAK
27.01.10
✎
20:38
|
пилят, отправилось... не то хотел написать....
короче, хрень выборка, когда какие-то условие, сложней валенка... |
|||
69
Bober
27.01.10
✎
21:34
|
(68) угу
|
|||
70
H A D G E H O G s
28.01.10
✎
09:04
|
(66) Плохо, очень плохо.
|
|||
71
H A D G E H O G s
28.01.10
✎
09:07
|
(66) Тест - не показателен.
|
|||
72
H A D G E H O G s
28.01.10
✎
09:09
|
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура"; Вот так надо. Либо без "Прервать;" Ишь, хитрые какие ! |
|||
73
Mitriy
28.01.10
✎
09:22
|
а кто вообще первый сказал, что Выборка из результата запроса считывает сразу все данные?
|
|||
74
MRAK
28.01.10
✎
12:55
|
(72) согласен, протупил этот момент....
|
|||
75
Живой Ископаемый
28.01.10
✎
13:25
|
думаю - не переименуй я ветку, не собрала бы она столько реплик... :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |