Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Зацикливание запросов при выполнении поиска по номеру (число прочтений - 4591 )
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Зацикливание запросов при выполнении поиска по номеру
19. Декабря 2008 :: 05:15
Печать  
У клиента возникла проблема - не ищется по номеру документ (с панели), программа якобы просто зависает. При трассировке Profiler-ом было установлено, что выполняется следующая последовательность запросов:
готовится курсор первичной выборки:
Код
Выбрать все
Select * from _1SJOURN(NOLOCK INDEX=DOCNO) where DNPREFIX=@P1 and DOCNO=@P2 order by DNPREFIX, DOCNO, ROW_ID 


далее идет перебор DNPREFIX и номера документа
и генерируется цепочка вот таких вот запросов:
Код
Выбрать все
exec sp_cursorexecute 9, @P1 output, @P2 output, @P3 output, @P4 output, '      5941-471    ', 'Р0600_197650        '
exec sp_cursorexecute 9, @P1 output, @P2 output, @P3 output, @P4 output, '      5941        ', 'Р0600_197650        '
exec sp_cursorexecute 9, @P1 output, @P2 output, @P3 output, @P4 output, '      5941-471    ', 'Р0600_197650        '
exec sp_cursorexecute 9, @P1 output, @P2 output, @P3 output, @P4 output, '      5941        ', 'Р0600_197650        ' 


то есть отметьте что @P1 в данном случае принимает то  '      5941-471    ' то '      5941        '
Я считаю что такого префикса '      5941-471    ' не может быть, так как в описание на http://metaprog.co.ua/secrprog/opisanietabl.html сказано, что первый 10 символов - это ID документа, оставшиеся 8 - период, но период не может быть "-471    " в связи с этим у меня возникли мысли о поврежденном md. Мои мысли подтвердились, но даже после его исправления (md) ситуация не изменилась. "      5941" - это вид вполне определенного документа из конфигурации - ЗаявкаПокупателя.
Подскажите - откуда может генерироваться такой DNPREFIX?
Заранее спасибо.
  
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #1 - 19. Декабря 2008 :: 06:00
Печать  
Посчитай для начала сколько всего документов с префиксом  '      5941-471    ' .
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #2 - 19. Декабря 2008 :: 06:09
Печать  
Z1 писал(а) 19. Декабря 2008 :: 06:00:
Посчитай для начала сколько всего документов с префиксом  '      5941-471    ' .

Такие документы в таблице _1sjourn отсутствуют.
  
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #3 - 19. Декабря 2008 :: 06:15
Печать  
а как из 1с можно узнать период уникальности конкретного вида документов ?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #4 - 19. Декабря 2008 :: 06:23
Печать  
leshik писал(а) 19. Декабря 2008 :: 06:09:
Z1 писал(а) 19. Декабря 2008 :: 06:00:
Посчитай для начала сколько всего документов с префиксом  '      5941-471    ' .

Такие документы в таблице _1sjourn отсутствуют.

странно но откуда же тогда sql его берет ?
Попробуй искать номера сначала только по конкретному виду документа.
т.е. этим мы определим ошибка из-за документа ЗаявкаПокупателя или что-то еще.
Далее можно сузить поиск ища только с включенной галкой
Только в интервале журнала и найти наименьший период в каком
происходит зависание.
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #5 - 19. Декабря 2008 :: 06:35
Печать  
Цитата:
странно но откуда же тогда sql его берет ?

вот и меня этот вопрос очень и очень сильно интересует.
  
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #6 - 19. Декабря 2008 :: 06:39
Печать  
leshik писал(а) 19. Декабря 2008 :: 06:35:
Цитата:
странно но откуда же тогда sql его берет ?

вот и меня этот вопрос очень и очень сильно интересует.

ну тогда пробуй что я посоветовал в post 4.
и может знаешь ответ на post 3. Хочу написать обработку по поиску
всех дублей номеров ( или просто тупо ещем где комбинация префикс, номер повторяется более одного раза ) Также можно найти документы где префикс не соответсвует текущему уникльности документов.

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



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #7 - 19. Декабря 2008 :: 06:48
Печать  
Z1 писал(а) 19. Декабря 2008 :: 06:15:
а как из 1с можно узнать период уникальности конкретного вида документов ?

Через Метаданные
Код сброшу чуть позже.
  
Наверх
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #8 - 19. Декабря 2008 :: 10:32
Печать  
База давно переиндексировалась?
  
Наверх
www  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #9 - 19. Декабря 2008 :: 12:06
Печать  
fez писал(а) 19. Декабря 2008 :: 10:32:
База давно переиндексировалась?

не уточнял - база размером 100 Гб
состояние индексов нормальное - нефрагментированы.
Как может влиять?
  
Наверх
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #10 - 19. Декабря 2008 :: 14:27
Печать  
Индексы иногда разрушаются.
Иногда даже таблички некоторые служебные разрушаются. Так что если переиндексация не поможет - то надо еще ТиИ попробовать.

P.S. Я вижу, что речь про sql.
  
Наверх
www  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #11 - 19. Декабря 2008 :: 14:48
Печать  
fez писал(а) 19. Декабря 2008 :: 14:27:
Индексы иногда разрушаются.
Иногда даже таблички некоторые служебные разрушаются. Так что если переиндексация не поможет - то надо еще ТиИ попробовать.

P.S. Я вижу, что речь про sql.

не сталкивался на sql. это наверное если совсем плохое железо.
ну и как это можно проверить без  удаления индексов ?



leshik а покажи запрос как ты искал что такой комбинации нет в базе.
надо наверное прогнать запрос без подсказок + like
тогда должны пройтись по кластерному индексу.


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



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #12 - 19. Декабря 2008 :: 14:53
Печать  
Цитата:
leshik а покажи запрос как ты искал что такой комбинации нет в базе

Код
Выбрать все
select DISTINCT(DNPREFIX) from _1sjourn 


в списке такого префикса не было.
  
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #13 - 19. Декабря 2008 :: 15:04
Печать  
leshik писал(а) 19. Декабря 2008 :: 14:53:
Цитата:
leshik а покажи запрос как ты искал что такой комбинации нет в базе

Код
Выбрать все
select DISTINCT(DNPREFIX) from _1sjourn 


в списке такого префикса не было.

а попробуй так
Код
Выбрать все
select *  from _1sjourn
where DNPREFIX   like '%5941-471%'
 


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


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #14 - 19. Декабря 2008 :: 17:49
Печать  
Z1 писал(а) 19. Декабря 2008 :: 14:48:
не сталкивался на sql.

Все когда-то бывает в первый раз.

Цитата:
это наверное если совсем плохое железо.

Еще как минимум бывают глючные релизы.
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать