Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Картинка (флажок) в колонке ТабличногоПоля (число прочтений - 16273 )
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #15 - 18. Августа 2008 :: 10:48
Печать  
Цитата:
Данные берутся из безобидного джойна со справочником Контрагенты

В запросе соединение-то наверно внутреннее стоит, а надо внешнее левое поставить.
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #16 - 18. Августа 2008 :: 17:09
Печать  
vip

Может быть, стоит включить Отладка(1) для поставщика данных и закинуть сюда примеры запросов, которые тормозят, и которые не тормозят.
Вдруг, что-то прояснится.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #17 - 18. Августа 2008 :: 18:04
Печать  
kms писал(а) 18. Августа 2008 :: 17:09:
vip

Может быть, стоит включить Отладка(1) для поставщика данных и закинуть сюда примеры запросов, которые тормозят, и которые не тормозят.
Вдруг, что-то прояснится.

kms
Спасибо за соболезнования Улыбка
Да ясно же, что причина наверняка простая. Поковыряю пока сам.
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #18 - 19. Августа 2008 :: 04:53
Печать  
vip, дак какое всетаки соединение стоит в твоем запросе? Скажи что внешнее, и при этом тормозит и я успокоюсь.
  
Наверх
ICQ  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #19 - 19. Августа 2008 :: 05:16
Печать  
Цитата:
какое всетаки соединение стоит в твоем запросе

Не подскажет ли Dmitro как тип соединения может влиять на быстродействие?
или хотя бы ссылочку где почитать можно.
Заранее огромное спасибо!
  
Наверх
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #20 - 19. Августа 2008 :: 05:23
Печать  
DmitrO писал(а) 19. Августа 2008 :: 04:53:
vip, дак какое всетаки соединение стоит в твоем запросе? Скажи что внешнее, и при этом тормозит и я успокоюсь.

Скажу, что LEFT JOIN, и добавлю, что без картинок ни малейших тормозов. Улыбка
Появилась подсказанная kms мысль о непорядке с картинкой, сегодня проверю.
И плавно причину все равно выясню.
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #21 - 19. Августа 2008 :: 06:09
Печать  
Ну вы что, господа? Первый раз замужем чтоли? Это же старая, известная фишка любых sql серверов.

Если несколько источников данных соединяются внутренним соединением (inner join), то оптимизатор запросов получает дополнительное пространство для раздумий: первичный проход можно делать по любому из источников данных, а данные из остальных источников выбираются букмарк лукапом, при этом отдается предпочтение кластерным индексам.
select
   t1.f1
   t2.f2
from t1
inner join t2 on t1.id = t2.id
where t1.d > 3 and t1.d < 23 and t2.f2 = 234

Предположим, что есть индекс по полю d, и кластерные индексы по полям id.
Такой запрос имеет два очевидных, конкурирующих плана выполнения:
1)Переход по индексу (Index seek) t1.d по условию t1.d > 3; проход по индексу до условия t1.d < 23; при проходе выполняя два перехода по кластерным: Bookmark lookup во-первых для t1 чтобы достать поле f1, во-вторых для t2 чтобы достать поле f2. Оптимизатор считает Bookmark lookup весьма тяжелой операцией.
2)пройти по кластерному индексу t2.id с условием t2.f2 = 234; и сделать для выбранных записей один переход по кластерному: Bookmark lookup в первичную таблицу t1, для получения f1 и оценки сразу всех остальных условий t1.d > 3 and t1.d < 23, а если еще в базе будет индекс по полю t2.f2, тогда вообще фиг знает какой план победит (скорее этот).

При этом оптимизатору предписано оценить эффективность различных вариантов плана выполнения по нескольким критериям (количество чтений, количество внутренне передаваемых данных, типы операций, утилизация проца и т.п., там разные коэффициенты по разным критериям). А как он (оптимизатор) это делает, если запрос еще только предстоит исполнить? Это делается на основе статистики. А статистика вещь хорошая только когда она в надлежащем состоянии. К сожалению не редки случаи когда на основе не объективной статистики (да и коэффициенты тоже людьми проставлены) и в пограничных вариантах оптимизатор выбирает не тот план выполнения. (Кстати на SQL 2005 оптимизатор в этом отношении умнее)

Вернемся к нашему примеру: если мы заранее знаем характер наших данных, то чтобы оптимизатор даже не сомневался, какую таблицу выбрать в качестве основы выборки, мы можем указать левое соединение вместо внутреннего:
select
   t1.f1
   t2.f2
from t1
left join t2 on t1.id = t2.id
where t1.d > 3 and t1.d < 23 and t2.f2 = 234

Тогда у оптимизатора не остается выбора: основной таблицей с которой он начнет проход будет t1 (точнее даже это будет таблица индекса t1.d).
  
Наверх
ICQ  
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #22 - 19. Августа 2008 :: 06:42
Печать  
Народ, помогите с флажками плизз Печаль вообще голова свернулась с ними Печаль не показывает и все тут Печаль только цифры.
пишу типа такого:

Код
Выбрать все
тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
_ТабличноеПоле=СоздатьОбъект("Общие.ТабличноеПоле");
тп=_ТабличноеПоле.Создать(Контекст, "тпТЗ", тз, 1);
тп.Колонки.Вставить("П",1);
 


ДанныеКартинки на них вообще орет поле агрегатного Печаль
Дальше вот из этого кода чего нужно сделать, чтобы флажки появились в ТП?  Плачущий
Документация настолько скудная просто до безобразия Печаль Не посвещенному не понять вообще. (как ЖК стала) Улыбка

1с++ 3.0.1.13
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #23 - 19. Августа 2008 :: 07:00
Печать  
DmitrO писал(а) 19. Августа 2008 :: 06:09:
Ну вы что, господа? Первый раз замужем чтоли? Это же старая, известная фишка любых sql серверов.

Не знал. Спасибо. Пошел курить свои "трудные" запросы.
  
Наверх
 
IP записан
 
AndreyM
Full Member
***
Отсутствует



Сообщений: 166
Местоположение: Харьков
Зарегистрирован: 13. Февраля 2008
Пол: Мужской
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #24 - 19. Августа 2008 :: 07:39
Печать  
Arta писал(а) 19. Августа 2008 :: 07:00:
DmitrO писал(а) 19. Августа 2008 :: 06:09:
Ну вы что, господа? Первый раз замужем чтоли? Это же старая, известная фишка любых sql серверов.

Не знал. Спасибо. Пошел курить свои "трудные" запросы.

Всё-таки сильная штука - коллективный разум!  Подмигивание
Посмотрю и на свои Улыбка
  

Правильно поставленный вопрос, уже содержит половину ответа.
Наверх
ICQ  
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #25 - 19. Августа 2008 :: 08:43
Печать  
а мне то, кто-нить поможет? Улыбка
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #26 - 19. Августа 2008 :: 09:38
Печать  
Спасибо огромное Dmitro за информацию. Это повод задумать и пересмотреть свои запросы.
Ваша помощь, Dmitro, всегда приходится настолько вовремя, что просто нету слов. Еще раз огромное спасибо!
  
Наверх
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #27 - 19. Августа 2008 :: 09:47
Печать  
Такие посты надо в FAQ  Подмигивание
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #28 - 19. Августа 2008 :: 09:50
Печать  
pavlo писал(а) 19. Августа 2008 :: 08:43:
а мне то, кто-нить поможет? Улыбка

Вроде в "Репозитарий классов 1С++ в единой конфе", что то было Подмигивание
  
Наверх
 
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Картинка (флажок) в колонке ТабличногоПоля
Ответ #29 - 19. Августа 2008 :: 10:50
Печать  
тоесть а проще никак? Печаль
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать