Переключение на Главную Страницу Страницы: 1 [2] 3 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Наилучший поиск по заданному номеру всех документов конкретного вида (sql) (число прочтений - 12652 )
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #15 - 28. Мая 2010 :: 10:21
Печать  
berezdetsky писал(а) 28. Мая 2010 :: 10:13:
Z1 писал(а) 28. Мая 2010 :: 10:07:
время в qa ( справа внизу ) неразличимо

В QA время - с точностью до секунд. И потом, кого в многопользовательских системах интересует время выполнения? Бóльшую часть стоимости плана выполнения составляет IO.

так тесты запускал на рабочей ( Нагруженной базе ) а так
как буфер очищал то чтений должно быть наверное одинаковое число.

стоимость плана через in значительно лучше чем через union all

т.е. для задачи из subj наилучшее решение в #8

PS  когда в списке один элемент in вырождается в =
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #16 - 28. Мая 2010 :: 11:44
Печать  
Еще можно вопрос
в той  ветке на  мисте (пост 129,131) один из участников сделал переиндексацию DBCC DBREINDEX(_1sjourn).
индекса и после этого даже неоптимальные запросы "залетали"
Т.е. вопрос как проверить что таблица действительно нуждается
в переиндексации и как часто ее (переиндексацию ) надо делать.

Сейчас еженочно делается defrag и обновление статистики.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #17 - 28. Мая 2010 :: 12:17
Печать  
Можно выполнить что-то вроде

DBCC SHOWCONTIG ('_1sjourn') WITH FAST, TABLERESULTS, ALL_INDEXES, NO_INFOMSGS

и проанализировать поля ScanDensity и LogicalFragmentation.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #18 - 28. Мая 2010 :: 12:59
Печать  
самое плохое значение по docno
pages                                  27062
Extent Switches                    4474
Scan Density                        75.620
Logical Scan Fragmentation   2.2829701900482178
Best Count                          3384
Actual Count                       4475                  

  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #19 - 28. Мая 2010 :: 13:22
Печать  
Это ещё хорошие значения, как для средне1сной нагрузки. IMHO.  Улыбка
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #20 - 28. Мая 2010 :: 13:26
Печать  
насколько я понял то
Logical Scan Fragmentation  это фрагментация при обходе по листьям индекса
Scan Density это  сравнение текущего дерева индекса с идеальным деревом индекса.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #21 - 28. Мая 2010 :: 13:30
Печать  
berezdetsky писал(а) 28. Мая 2010 :: 13:22:
Это ещё хорошие значения, как для средне1сной нагрузки. IMHO.  Улыбка

спасибо за все разъяснения Очень довольный
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #22 - 28. Мая 2010 :: 17:03
Печать  
Раз уж полезли в глубь (заранее спасибо)

подскажите как проверить что у таблицы (индексов ) есть внешняя файловая фрагментация.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #23 - 28. Мая 2010 :: 17:35
Печать  
Сомневаюсь, что это возможно в рамках какой либо реляционной СУБД, т.к. противоречит восьмому правилу Кодда.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #24 - 31. Мая 2010 :: 10:29
Печать  
Z1 писал(а) 28. Мая 2010 :: 12:59:
самое плохое значение по docno
pages                                  27062
Extent Switches                    4474
Scan Density                        75.620
Logical Scan Fragmentation   2.2829701900482178
Best Count                          3384
Actual Count                       4475                  


за полдня работы ( сегодня ) для индекса  docno ( _1sjourn )
значения стали аналогичными ( в пятницу вечером выполнил DBCC DBREINDEX('_1sjourn') )
Scan Density 77.40
Logical Scan Fragmentation  2.05


Количество новых документов за 31.05
4471   (  select count(*) from _1sjourn where  date_time_iddoc >= '20100531' and date_time_iddoc < '201006')

  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #25 - 31. Мая 2010 :: 10:41
Печать  
Также непонятно почему 1с сделали индекс
docno = (  dnprefix,docno) ( такой индекс хорошо подходит только для поиска максимального номера по заданному префиксу для новых номеров )

Для поиска по конкретному номеру на порядок лучше ( по селективности ) был бы индекс docno = ( docno, dnprefix)
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #26 - 31. Мая 2010 :: 11:05
Печать  
Z1 писал(а) 31. Мая 2010 :: 10:41:
Также непонятно почему 1с сделали индекс
docno = (  dnprefix,docno) ( такой индекс хорошо подходит только для поиска максимального номера по заданному префиксу для новых номеров )

Именно для этого он и сделан. Ничего более.

Цитата:
Для поиска по конкретному номеру на порядок лучше ( по селективности ) был бы индекс docno = ( docno, dnprefix)

1с, как разработчику, поиск по номеру вне рамок периода для периодичных номеров видимо не интересен. Вот и нет такого индекса

ps
к тому же, при наличии только индекса (docno, dnprefix) невозможно было бы решить задачу определения макс. номера.
  

1&&2&&3
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #27 - 31. Мая 2010 :: 12:24
Печать  
trad писал(а) 31. Мая 2010 :: 11:05:
Z1 писал(а) 31. Мая 2010 :: 10:41:
Также непонятно почему 1с сделали индекс
docno = (  dnprefix,docno) ( такой индекс хорошо подходит только для поиска максимального номера по заданному префиксу для новых номеров )

Именно для этого он и сделан. Ничего более.

Цитата:
Для поиска по конкретному номеру на порядок лучше ( по селективности ) был бы индекс docno = ( docno, dnprefix)

1с, как разработчику, поиск по номеру вне рамок периода для периодичных номеров видимо не интересен. Вот и нет такого индекса

ps
к тому же, при наличии только индекса (docno, dnprefix) невозможно было бы решить задачу определения макс. номера.


не получается.
Если у документа  выключена галка Атоматическая нумерация
то макс номер не вычисляется
иначе макс номер должен определяться по таблице _1sdnlock
и индекс docno таблицы _1sjourn как бы для этого не нужен.

  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #28 - 31. Мая 2010 :: 13:18
Печать  
Z1 писал(а) 31. Мая 2010 :: 12:24:
...
иначе макс номер должен определяться по таблице _1sdnlock

а на самом деле как, смотрел?
  

1&&2&&3
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #29 - 31. Мая 2010 :: 14:54
Печать  
trad писал(а) 31. Мая 2010 :: 13:18:
Z1 писал(а) 31. Мая 2010 :: 12:24:
...
иначе макс номер должен определяться по таблице _1sdnlock

а на самом деле как, смотрел?

подробно не смотрел
посмотрел так ( если надо то буду глядеть в профайлере )

1.
зашел в qa
выполнил
begin tran
select * From _1sdnlock(tablock holdlock)

Пытаюсь после этого создать новый документ ( у которого есть галка автоматическая нумерация )
получаем вечное ожидание (формы документа нет а есть курсор в виде часов)
пока в qa не выполним commit


2.
зашел в qa
выполнил
begin tran
select * From _1sdnlock(tablock holdlock)

Пытаюсь после этого создать новый документ другого вида
( у которого выключена галка автоматическая нумерация )
выдается форма документа.






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