|
запрос к внешнему источнику невыносимо долог | ☑ | ||
---|---|---|---|---|
0
Wobland
18.03.13
✎
07:21
|
сделал я когда-то сравнительно большой прямой запрос в семёрке. теперь захотелось мне выполнить его на восьмёрке к внешнему источнику данных. кое-где текст запроса пришлось поправить, в целом он работает. аж 360 секунд. в семёрке он отрабатывает за 2-3. отчего так долго?
|
|||
1
Wobland
18.03.13
✎
07:25
|
правки исходного текста были следующие:
1) ВнешнийИсточникДанных.ТиС.Таблица.dbo_ --добавлено во всех нужных местах 2) SUBSTRING(ЖурО.Date_Time_IDDoc, 1, 8) BETWEEN &ДатаНачала AND &ДатаОкончания --вместо LEFT() 3) ((ЖурО.Closed=1) OR (ЖурО.Closed=3) OR (ЖурО.Closed=5) OR (ЖурО.Closed=7)) --вместо ЖурО.Closed&1=1 4) имена полей разыменовывал самостоятельно |
|||
2
Wobland
18.03.13
✎
07:29
|
5) ON SUBSTRING(ВозвратШ.SP1633, 4, 9)=ОтчётККМ.IDDoc --вместо RIGHT - соединение по документу-основанию
|
|||
3
Wobland
18.03.13
✎
08:06
|
а это говорит о том, что у меня семёрка не стоит, или о вредности платформы 8.2.17.169? |
|||
4
Wobland
18.03.13
✎
09:06
|
в качестве подъёма ветки
В каком-то институте, в котором готовили литературных переводчиков, на контрольной студентам раздали текст русской частушки, и попросили перевести. Текст такой: Эх, лапти мои, Четыре оборки, Хочу - дома заночую, Хочу - у Егорки. Листочки с результатами работы собрали, и выдали студентам другой группы, с предложением перевести обратно на русский. Вот. Наиболее интересные варианты. Невыносимо туфли блещут лаком, До бездны только шаг, все решено, Мне дома нынче сон уже не лаком, Мне нынче спать у Джорджа суждено. |
|||
5
cw014
18.03.13
✎
09:08
|
Понедельник, а он уже обкуренный
|
|||
6
Wobland
18.03.13
✎
09:09
|
(5) я ещё в пятницу начал ;)
|
|||
7
viktor_vv
18.03.13
✎
09:09
|
Тормозит из-за этого скорее всего
SUBSTRING(ЖурО.Date_Time_IDDoc, 1, 8) BETWEEN &ДатаНачала AND &ДатаОкончания --вместо LEFT() индексы таки не сипользуются. |
|||
8
viktor_vv
18.03.13
✎
09:10
|
Сделай через ADO.
|
|||
9
Wobland
18.03.13
✎
09:13
|
(7) этот же запрос (убрав п.1) выполняю в семёрке. результат - максимум 9 секунд. ну тормозит, но не настолько же
|
|||
10
Wobland
18.03.13
✎
09:15
|
(8) а скажи ключевые слова, плз
|
|||
11
cw014
18.03.13
✎
09:16
|
(10) Па-жа-луй-ста :)
|
|||
12
МихаилМ
18.03.13
✎
09:34
|
в
SUBSTRING(ЖурО.Date_Time_IDDoc, 1, 8) BETWEEN &ДатаНачала AND &ДатаОкончания уберите SUBSTRING просто Date_Time_IDDoc |
|||
13
МихаилМ
18.03.13
✎
09:34
|
лучше приведите весь текст запроса
|
|||
14
Fragster
гуру
18.03.13
✎
09:37
|
это из-за or
|
|||
15
Fragster
гуру
18.03.13
✎
09:38
|
ЖурО.Closed <> 0
|
|||
16
Fragster
гуру
18.03.13
✎
09:38
|
и SUBSTRING
|
|||
17
МихаилМ
18.03.13
✎
09:39
|
(15)
неправильно . в (1) верно |
|||
18
Wobland
18.03.13
✎
09:39
|
сочинял для семёрки, потом переводил на восьмёрку. теперь выполняю два почти одинаковых текста. разница между текстами только в "ВнешнийИсточникДанных.ТиС.Таблица.dbo_".
исходная задача. поиметь ТЗ вида: Дата | Касса | Суммы продаж и возвратов | себестоимости продаж и возвратов
|
|||
19
Fragster
гуру
18.03.13
✎
09:41
|
ну нафига ИЛИ везде лепить?
|
|||
20
Fragster
гуру
18.03.13
✎
09:41
|
нафига функции к индексированным полям применять?
|
|||
21
Wobland
18.03.13
✎
09:43
|
(19) (20) чо? не дошло
|
|||
22
Fragster
гуру
18.03.13
✎
09:43
|
вот это: ЖурВ.sp5365=&Организация OR &ПустаяОрганизация вообще надо заменить на &_УсловиеОрганизации и потом менять на нужное (Истина или ЖурВ.sp5365=&Организация)
|
|||
23
Fragster
гуру
18.03.13
✎
09:44
|
(21) если у тебя по ЖурО.Date_Time_IDDoc индекс, то он не работает, если ты сравницаешь не прямое значение, а результат выполнения функции с этим полем - это основное.
|
|||
24
Wobland
18.03.13
✎
09:44
|
(22) аа.. это я в семёрке не знал, как с пустым полем сравнивать
Запрос.УстановитьПараметр("Организация", ""); Запрос.УстановитьПараметр("ПустаяОрганизация", Истина); |
|||
25
Fragster
гуру
18.03.13
✎
09:45
|
а дальше - см (22) ну и непонятно, зачем ты определяешь проведенность документа по 3-м ИЛИ вместо <>0, например
|
|||
26
Wobland
18.03.13
✎
09:45
|
(23) таки (12) прав?
|
|||
27
Fragster
гуру
18.03.13
✎
09:45
|
(26) это основной тормоз, но остальные тоже добавляют
|
|||
28
Wobland
18.03.13
✎
09:46
|
(25) это от недостатка опыта/знаний. один фих семёрка это же делает на два порядка быстрее
|
|||
29
Fragster
гуру
18.03.13
✎
09:47
|
(28) прием (22) и в снеговике часто работает намного быстрее
|
|||
30
Wobland
18.03.13
✎
09:51
|
сделал типа
работало 6 секунд. верность полученного буду ещё проверять, но результат удивил. спасибо!! |
|||
31
МихаилМ
18.03.13
✎
09:56
|
ЖурО.Closed<>0
неправильно. будет верно только для одной компоненты бух или опер учет. для остальных компонент Closed > 0 всегда. если не нравится ИЛИ? замените на IN |
|||
32
Wobland
18.03.13
✎
10:03
|
с "AND ((ЖурО.Closed=1) OR (ЖурО.Closed=3) OR (ЖурО.Closed=5) OR (ЖурО.Closed=7))" отработало за 4.5 секунды. не принципиально
|
|||
33
viktor_vv
18.03.13
✎
10:04
|
(30) И на всякий случай спрошу, &ДатаНачала и &ДатаОкончания у тебя, особенно Датаокончания ?
|
|||
34
viktor_vv
18.03.13
✎
10:05
|
(33)+ Я к тому, что Датаокончания должна быть "20130131z".
|
|||
35
Wobland
18.03.13
✎
10:07
|
(34) Запрос.УстановитьПараметр("ДатаНачала", "20130317");
Запрос.УстановитьПараметр("ДатаОкончания", "20130317Z"); про Z мне Mikeware в бананановской ветке говорил (кстати, я там тыщу уже в конце накручивал, если чо ;) |
|||
36
viktor_vv
18.03.13
✎
10:12
|
(35) Если чо, я там тыщу и поймал :).
|
|||
37
acsent
18.03.13
✎
10:19
|
а построитель запросов работает с внешними источниками?
|
|||
38
Wobland
18.03.13
✎
10:25
|
(37) ТабДок=Новый ТабличныйДокумент;
Построитель=Новый ПостроительОтчета; Построитель.Текст=ПолучитьТекстЗапроса(); Построитель.Параметры.Вставить("ДатаНачала", "20130317"); Построитель.Параметры.Вставить("ДатаОкончания", "20130317Z"); Построитель.Параметры.Вставить("Организация", ""); Построитель.Параметры.Вставить("ПустаяОрганизация", Истина); Построитель.Параметры.Вставить("Склад", ""); Построитель.Параметры.Вставить("ПустойСклад", Истина); Построитель.Выполнить(); Построитель.Вывести(ТабДок); Возврат ТабДок; полёт нормальный |
|||
39
Wobland
18.03.13
✎
10:26
|
+(38) с Построитель=Новый ПостроительЗапроса; тоже
|
|||
40
Fragster
гуру
18.03.13
✎
11:00
|
(38) а нафига построитель, если все равно
Построитель.Параметры.Вставить("Организация", ""); Построитель.Параметры.Вставить("ПустаяОрганизация", Истина); |
|||
41
Fragster
гуру
18.03.13
✎
11:01
|
построитель - он же как раз чтобы динамический текст, в том числе необязательные условия пихать
|
|||
42
Wobland
18.03.13
✎
11:05
|
(40) не наю. acsent спросил, я попробовал ;) более мудрёно с ним крутить не хочу. не люблю я его
|
|||
43
regniws
18.03.13
✎
11:12
|
план запроса уже рекомендовали посмотреть?
|
|||
44
Wobland
18.03.13
✎
11:24
|
(43) нет. время выполнения снизилось до психологически приемлемой величины в 1.5-6 секунд, необходимости в осмотре плана не вижу. скажу больше: лишь смутно догадываюсь, о чём речь ;) а как посмотреть план?
|
|||
45
regniws
18.03.13
✎
11:29
|
(44) ммм..http://goo.gl/FnA3S
|
|||
46
regniws
18.03.13
✎
11:29
|
(44) одно дело получить готовый рецепт, другое - понять самому..
|
|||
47
Wobland
18.03.13
✎
11:31
|
(45) +10 к опыту, спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |