Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Создание доп индексов в таблице _1SJOURN? (число прочтений - 7066 )
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Создание доп индексов в таблице _1SJOURN?
21. Июля 2010 :: 19:32
Печать  
Хочу добавить индекс в таблицу _1SJOURN, прописываю в файле 1CV7.DDS строку:
Код
Выбрать все
I=IX_1SJ_F_A                     |IX_1SJ_F_A    |1     |IDDOC,CLOSED,ISMARK,SP20604,SP1854                          |0           



В ответ ошибка о неверном поле ISMARK (Invalid field type in index! ( Field: ISMARK )).

А если прописать индекс:
Код
Выбрать все
I=IX_1SJ_F_A                     |IX_1SJ_F_A    |1     |IDDOC,CLOSED,SP20604,SP1854                                 |0           



то все нормально, в чем может быть проблема?

p.s. Такой индекс без проблем создается из SSMS (QA).
  
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #1 - 21. Июля 2010 :: 19:40
Печать  
Есть подозрение, что 1С почему то не может создать индекс по полю ISMARK, причем даже если просто создать индекс по этому одному полю - и в таком случае 1С выдает ошибку.
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #2 - 21. Июля 2010 :: 20:04
Печать  
pvase писал(а) 21. Июля 2010 :: 19:32:
p.s. Такой индекс без проблем создается из SSMS (QA).

который из выше приведенных?
тот который с ismark?
  

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



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #3 - 22. Июля 2010 :: 05:17
Печать  
trad писал(а) 21. Июля 2010 :: 20:04:
pvase писал(а) 21. Июля 2010 :: 19:32:
p.s. Такой индекс без проблем создается из SSMS (QA).

который из выше приведенных?
тот который с ismark?

Да, вот как SQL его создает:
Код
Выбрать все
CREATE NONCLUSTERED INDEX IX_1SJ_F_A ON dbo._1SJOURN
	(
	IDDOC,
	CLOSED,
	ISMARK,
	SP20604,
	SP1854
	) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 


Создает без проблем, а вот 1С-ка не хочет.

Проверил на другой SQL базе - та же ошибка. Наверное 1С-у или имя ISMARK не нравиться, или же с типом Logic у 1С проблема.
  
Наверх
IP записан
 
Leierkastenmann
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 114
Зарегистрирован: 30. Марта 2007
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #4 - 22. Июля 2010 :: 05:20
Печать  
В 1ске проблема ясное дело  Улыбка Видимо ей не нравится битовый тип для создания индекса, она на самом деле даже не пытается создавать такой индекс.
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #5 - 22. Июля 2010 :: 05:25
Печать  
Leierkastenmann писал(а) 22. Июля 2010 :: 05:20:
В 1ске проблема ясное дело  Улыбка Видимо ей не нравится битовый тип для создания индекса, она на самом деле даже не пытается создавать такой индекс.

А как быть если индекс очень нужен?
  
Наверх
IP записан
 
Leierkastenmann
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 114
Зарегистрирован: 30. Марта 2007
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #6 - 22. Июля 2010 :: 05:38
Печать  
Вот тут можно почитать http://softpoint.ru/article_id15.htm
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #7 - 22. Июля 2010 :: 05:42
Печать  
ну, как бы в BOL про тип bit, коим является поле ismark,  сказано:
Цитата:
Remarks
Columns of type bit cannot have indexes on them.

1с это "сечет" до того как отправляет запрос на сервер.

ps не понятно почему сервер все же может создать такой индекс в нарушение документации
  

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



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #8 - 22. Июля 2010 :: 05:56
Печать  
и вообще любой индекс с IDDOC в качестве первого поля ключа абсолютно лишен смысла.

Почему?
Потому что уже есть индекс [IDDOC] при этом уникальный.
  

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



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #9 - 22. Июля 2010 :: 06:15
Печать  
trad писал(а) 22. Июля 2010 :: 05:56:
и вообще любой индекс с IDDOC в качестве первого поля ключа абсолютно лишен смысла.

Почему?
Потому что уже есть индекс [IDDOC] при этом уникальный.

Возможно, но после создания такого индекса, мой запрос стал работать в несколько раз быстрее (потому что условия идут как раз по полям CLOSED,ISMARK,SP20604,SP1854 одновременно, без этого индекса SQL приходиться все время делать сканирование вместо позиционирования - подсмотрел в плане выполнения. Кстати в 2008 в этом же плане и показало какой индекс надо создать).
  
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #10 - 22. Июля 2010 :: 06:18
Печать  
Leierkastenmann писал(а) 22. Июля 2010 :: 05:38:
Вот тут можно почитать http://softpoint.ru/article_id15.htm


Спасибо, но что то не нашел решение как это сделать самому.
  
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #11 - 22. Июля 2010 :: 06:22
Печать  
Ну у меня сделано вот так:
Код
Выбрать все
	Запрос = СоздатьОбъект("ODBCRecordset");
	ТекстЗапроса = "
	|IF NOT EXISTS (SELECT name FROM sysindexes WHERE name = 'P1C_IDDOC_SP1599')
	|begin
	|/****** Object:  Index [P1C_IDDOC_SP1599]    Script Date: 06/16/2010 22:01:57 Документ Реализация индекс по номенклатуре ******/
	|CREATE NONCLUSTERED INDEX [P1C_IDDOC_SP1599] ON [dbo].[DT1611]
	|(
	|[IDDOC] ASC,
	|[SP1599] ASC
	|)WITH (PAD_INDEX  = ON, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
	|end
 


Trad, а не подскажешь тогда - какой индекс правильно создать скажем как в приведенном мной примере - у меня часто идут фильтры по номенклатуре из табличной части документа Реализация?
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #12 - 22. Июля 2010 :: 06:29
Печать  
pvase писал(а) 22. Июля 2010 :: 06:15:
после создания такого индекса, мой запрос стал работать в несколько раз быстрее (потому что условия идут как раз по полям CLOSED,ISMARK,SP20604,SP1854 одновременно

т.е. ты хочешь сказать, что создал индекс:
IDDOC,CLOSED,ISMARK,SP20604,SP1854
а в условиях запроса указаны поля:
CLOSED,ISMARK,SP20604,SP1854 и не указан IDDOC
и сервер выбирает твой индекс?
  

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



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #13 - 22. Июля 2010 :: 06:35
Печать  
leshik писал(а) 22. Июля 2010 :: 06:22:
Trad, а не подскажешь тогда - какой индекс правильно создать скажем как в приведенном мной примере - у меня часто идут фильтры по номенклатуре из табличной части документа Реализация?

как минимум не уникальный (SP1599)
можно и такой не уникальный (SP1599, IDDOC)
но я бы сделал уникальный (SP1599, IDDOC, LINENO_)
  

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



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание доп индексов в таблице _1SJOURN?
Ответ #14 - 22. Июля 2010 :: 07:33
Печать  
leshik писал(а) 22. Июля 2010 :: 06:22:
Ну у меня сделано вот так:
Код
Выбрать все
	Запрос = СоздатьОбъект("ODBCRecordset");
	ТекстЗапроса = "
	|IF NOT EXISTS (SELECT name FROM sysindexes WHERE name = 'P1C_IDDOC_SP1599')
	|begin
	|/****** Object:  Index [P1C_IDDOC_SP1599]    Script Date: 06/16/2010 22:01:57 Документ Реализация индекс по номенклатуре ******/
	|CREATE NONCLUSTERED INDEX [P1C_IDDOC_SP1599] ON [dbo].[DT1611]
	|(
	|[IDDOC] ASC,
	|[SP1599] ASC
	|)WITH (PAD_INDEX  = ON, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
	|end
 


Trad, а не подскажешь тогда - какой индекс правильно создать скажем как в приведенном мной примере - у меня часто идут фильтры по номенклатуре из табличной части документа Реализация?


А как вы добились чтобы 1С-ка не ругалась на нарушение структуры индексов таблицы _1SJOURN при входе не в монопольном режиме?
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать