![]() |
|
Получение данных из хранилища значений | ☑ | ||
---|---|---|---|---|
0
Широкий
07.02.12
✎
16:54
|
Перем мЯваСкрипт;
//--------------------------------------------------------------------// Процедура Тест2() ВремяНачала = мЯваСкрипт.Eval("(new Date()).valueOf()"); Запрос=Новый Запрос; Запрос.УстановитьПараметр("Ссылка",Серия); Запрос.Текст="ВЫБРАТЬ | Образы.Образ |ИЗ | Справочник.Серии.Образы КАК Образы |ГДЕ | Образы.Ссылка = &Ссылка | |УПОРЯДОЧИТЬ ПО | Образы.НомерСтроки"; Результат=Запрос.Выполнить(); Выборка=Результат.Выбрать(); Пока Выборка.Следующий() Цикл ТекКартинка=Выборка.Образ.Хранилище.Получить(); КонецЦикла; ВремяКонцаВыполнения = мЯваСкрипт.Eval("(new Date()).valueOf()"); Сообщить("Получение из ссылки "+Формат((ВремяКонцаВыполнения - ВремяНачала) / 1000, "ЧДЦ=3; ЧРД=.; ЧН=0; ЧГ=")); КонецПроцедуры Процедура Тест1() ВремяНачала = мЯваСкрипт.Eval("(new Date()).valueOf()"); Запрос=Новый Запрос; Запрос.УстановитьПараметр("Ссылка",Серия); Запрос.Текст="ВЫБРАТЬ | Образы.Образ.Хранилище |ИЗ | Справочник.Серии.Образы КАК Образы |ГДЕ | Образы.Ссылка = &Ссылка | |УПОРЯДОЧИТЬ ПО | Образы.НомерСтроки"; Результат=Запрос.Выполнить(); Выборка=Результат.Выбрать(); Пока Выборка.Следующий() Цикл ТекКартинка=Выборка.ОбразХранилище.Получить(); КонецЦикла; ВремяКонцаВыполнения = мЯваСкрипт.Eval("(new Date()).valueOf()"); Сообщить("Получение из запроса "+Формат((ВремяКонцаВыполнения - ВремяНачала) / 1000, "ЧДЦ=3; ЧРД=.; ЧН=0; ЧГ=")); КонецПроцедуры Процедура КнопкаВыполнитьНажатие(Кнопка) мЯваСкрипт = Новый COMОбъект("MSScriptControl.ScriptControl"); мЯваСкрипт.Language = "javascript"; Тест1(); Тест2(); КонецПроцедуры Результаты: Получение из ссылки 29.784 Получение из запроса 46.047 Получение из ссылки 0.208 Получение из запроса 42.055 Не могу понять: 1. Почему запросом данные считываются дольше? 2. Почему результат запроса не кешируется? |
|||
1
asady
07.02.12
✎
17:13
|
(0) файловая/скуль??
|
|||
2
Широкий
08.02.12
✎
09:45
|
(1) Скуль
|
|||
3
mikecool
08.02.12
✎
09:47
|
(2) а данные блобов кешируются вообще?
|
|||
4
aleks-id
08.02.12
✎
09:49
|
Справочник.Серии.Образы.Образ.Хранилище.Офигеть!!!
|
|||
5
aleks-id
08.02.12
✎
09:50
|
нефиг такие вещи запросами дергать. ссылка же есть уже - дергай из ссылки
|
|||
6
mikecool
08.02.12
✎
09:51
|
(5) дык, блоб по ссылке все равно запросом вытянется
|
|||
7
mikecool
08.02.12
✎
09:51
|
+6 ибо не выбирается при получении ссылки
|
|||
8
Широкий
08.02.12
✎
09:53
|
(2) Судя по получению данных из ссылки -все же кешируются
(5) Ты похоже сути не понял |
|||
9
Широкий
08.02.12
✎
09:56
|
Единственное что приходит в голову - у запроса есть ограничение на объем получаемой выборки. Если объем превышает какого -то порога - идет что то типа свопа.
|
|||
10
aleks-id
08.02.12
✎
10:00
|
(8) да понял я. у тебя есть справочник с табчастью, где ты хранишь какие то двоичные данные. если ты дергаешь ссылку на строку тч - происходит кэширование, если дергаешь сразу данные - кэширование не происходит.
|
|||
11
aleks-id
08.02.12
✎
10:04
|
+10 ты попробуй все же так
Процедура Тест3() ВремяНачала = мЯваСкрипт.Eval("(new Date()).valueOf()"); ТекТЧ = Ссылка.Образы; Для Каждого СтрТЧ Из ТекТЧ Цикл ТекКартинка=СтрТЧ.Хранилище.Получить(); КонецЦикла; ВремяКонцаВыполнения = мЯваСкрипт.Eval("(new Date()).valueOf()"); Сообщить("Получение без запроса "+Формат((ВремяКонцаВыполнения - ВремяНачала) / 1000, "ЧДЦ=3; ЧРД=.; ЧН=0; ЧГ=")); КонецПроцедуры |
|||
12
Широкий
08.02.12
✎
10:06
|
(10) Не так.
Есть справочник "Серии". У него есть табличная часть "Образы". У табличной части реквизит "Образ" - это справочник ХранилищеДопИнформации (где изображение собсно и лежит). В запросе все это видно |
|||
13
aleks-id
08.02.12
✎
10:08
|
(12) в (11) -> СтрТЧ.Образ.Хранилище.Получить()
|
|||
14
Широкий
08.02.12
✎
10:11
|
(11) Здесь уже заведомо не айс.. Мне считывать весь элемент справочника серии не нужно
|
|||
15
Широкий
08.02.12
✎
12:07
|
^
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |