powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Индексы и/или представления в MS SQL
13 сообщений из 13, страница 1 из 1
Индексы и/или представления в MS SQL
    #37237356
tsandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Вопрос к знатокам 1С и MS SQL.

Исходные данные. Есть 1С 7.7 под MS SQL 2000. Из 1С средствами MS SQL вытягиваюся данные. Проявилась проблема - для SELECTа хочется иметь дополнительные индексы, чтобы оптимизировать запрос.

Читал http://softpoint.ru/article_id15.htm . Предлагаемый путь понятен. Но уж очень не хочется ничего править в базе данных, а именно, системную хранимую процедуру. Хотелось бы обойтись только созданием своих объектов, которые не будут мешать 1С. В связи с этим видится такой путь. Создаем представление на таблицу. К этому представлению создаем индексы. Ну, и далее, работаем только с представлением. Если верить http://www.softpoint.ru/article_id4.htm , то представления, вроде бы, не влияют на верификацию в 1С. А вот как насчет индексов к этим представлениям? Может кто сталкивался или есть мысли по этому поводу?

Заранее, спасибо!
...
Рейтинг: 0 / 0
Индексы и/или представления в MS SQL
    #37237375
Алексей2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2000 индекс на представление? =)
...
Рейтинг: 0 / 0
Индексы и/или представления в MS SQL
    #37237404
tsandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей2003,
> SQL2000 индекс на представление? =)

Именно так. Если я недостаточно ясно выразился, то, на всякий случай - если верить книге: М.Ф.Гарсиа и др. Microsoft SQL Server 2000. Справочник администратора, стр.452: "Индексированные представления. SQL Server 2000 позволяет вам создать индекс по представлению ... Индекс создается с помощью оператора T-SQL CREATE INDEX ... Единственным отличием является то, что вместо имени таблицы вы указываете имя представления".
...
Рейтинг: 0 / 0
Индексы и/или представления в MS SQL
    #37237892
Leierkastenmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tsandrew,

Несколько лет назад пытался сделать такое, но представление, чтобы его можно было индексировать, должно быть SCHEMABINDING. А это означает, что нельзя будет в используемые таблицы вносить изменения, поскольку у 1ски штатными средствами это drop и create table. То есть придется перед обновлением конфигурации удалять представление, а потом пересоздавать его.
...
Рейтинг: 0 / 0
Индексы и/или представления в MS SQL
    #37237928
tsandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leierkastenmann,

Спасибо!

Информация очень ценная! Попробую двинуться в этом направлении. Все же это лучше, чем править системную хранимую процедуру.

Еще раз, спасибо!
...
Рейтинг: 0 / 0
Индексы и/или представления в MS SQL
    #37237992
Leierkastenmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tsandrew,

А оптимизируемый запрос ускоряется только дополнительными индексами? Просто вполне может быть, что оптимизация может быть достигнута и без неприемлемых 1ской индексов и без лишних представлений. Мы обычно в своей системе стараемся обходиться без лишних нестандартных для 1ски объектов.
...
Рейтинг: 0 / 0
Индексы и/или представления в MS SQL
    #37238093
tsandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leierkastenmann,

Я тоже сторонник такого подхода. Но к сожалению, в моем случае трудно не обойтись без дополнительных индексов. В SELECTе участвует табличка. По ней нужны агрегированные данные типа CONT(*). У этой 1С-ной таблички только PRIMATY KEY по Id. Больше никаких индексов нет. А агрегирование нужно по другим полям. Вот и выходит FULL SCAN.

Я рассматриваю еще один путь. Создать свою табличку. Отдельную. И повесить на 1С-ную табличку триггеры, которые собирают агрегированную информацию из этой 1С-ной аблички. И здесь еще 2 вопроса. Как посмотрит 1С на чужеродную таблику? Если плохо, то можно создать свою табличку в отдельно базе. Хотя, понятно, это не здОрово. И еще. А как посмотрит 1С на чужие триггера к своим таблицам?

Может еще что-то можно? Типа материализованных представлений из Oracle? С MS SQL я давно плотно не работал, последний раз в прошлом тысячелетии. Последние 10 лет только Oracle.
...
Рейтинг: 0 / 0
Индексы и/или представления в MS SQL
    #37238162
Leierkastenmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tsandrew,

К чужеродным табличкам в своей базе 1ска безразлична, делайте сколько угодно. Триггер тоже можно навесить, 1ска его не отвергнет. Правда если вносить изменения в структуру таблицы, то триггер будет удален и надо его будет заново создать. Только надо осторожней с ними быть, поскольку методы в 1ске не всегда очевидным образом транслируются в SQL-инструкции, в каких-то случаях 1ска делает update, в каких-то insert и delete. Ну и в целом, где будет выигрыш, если при каждой операции триггер будет заниматься подсчетами в неиндексированной табличке и складывать данные в другую табличку?
...
Рейтинг: 0 / 0
Индексы и/или представления в MS SQL
    #37238266
tsandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leierkastenmann,

Про чужеродные таблицы и триггеры хорошая новость! Спасибо!

Дело в том, что у меня ситуация не совсем типичная. Сама 1С в данной конфигурации очень мало загружена. Она служит перевалочной базой между торговыми представителями, которые вводят заказы через смартфоны, и основной Oracle базой данных. Моя конечная цель -иметь фиксированное время отклика системы, пусть и не самое оптимальное, но фиксированное. А сейчас база 1С постепенно растет, соответственно, постепенно растет время отклика. И вот на днях время отклика на SELECT превысило 30 секунд, установленных Микрософтом в компоненте .NET. Сейчас я просто увеличил таймаут до 300 секунд. Минимум на год этого хватит. И пользователи не будут жаловаться. Такова ситуация. Мне важно все реализовать внутри программы на C#. И зафиксировать время отклика. С помощью отдельной таблицы и триггеров, насколько я понял, это возможно.

> Ну и в целом, где будет выигрыш, если при каждой операции триггер
> будет заниматься подсчетами в неиндексированной табличке
> и складывать данные в другую табличку?
В моем случае неиндексированость 1С-ной таблицы при тригерах как раз роли не играет. Главное, чтобы моя отдельная таблица для агрегированных данных была индексирована. Я до этой таблицы 1С-у нет никакого дела.
...
Рейтинг: 0 / 0
Индексы и/или представления в MS SQL
    #37239303
Егоров Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tsandrew,

Если достаточно только индексов на родных 1Сных табличек - эти индексы может создать и сама 1Ска, и даже может их считать своими родными индексами. Читать тут . :)
...
Рейтинг: 0 / 0
Индексы и/или представления в MS SQL
    #37239399
VladimirKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leierkastenmanntsandrew,

Несколько лет назад пытался сделать такое, но представление, чтобы его можно было индексировать, должно быть SCHEMABINDING. А это означает, что нельзя будет в используемые таблицы вносить изменения, поскольку у 1ски штатными средствами это drop и create table. То есть придется перед обновлением конфигурации удалять представление, а потом пересоздавать его.

+1, Но это часто стоит того. Главное иметь ввиду, как ведет себя index view в различных версиях SQL. Я однажды столкнулся свот этим: Index Scan и индексированное представление
...
Рейтинг: 0 / 0
Индексы и/или представления в MS SQL
    #37239501
tsandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Егоров Александрtsandrew,

Если достаточно только индексов на родных 1Сных табличек - эти индексы может создать и сама 1Ска, и даже может их считать своими родными индексами. Читать тут . :)

Спасибо!

Тоже возможный вариант. Я уже натыкался на возможность правки 1cv7.ddx и подобный скрипт. Здесь мне не понравились только то, что приходится трогать родную 1С. Но возможно это наименьшее зло.
...
Рейтинг: 0 / 0
Индексы и/или представления в MS SQL
    #37239502
tsandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladimirKrLeierkastenmanntsandrew,

Несколько лет назад пытался сделать такое, но представление, чтобы его можно было индексировать, должно быть SCHEMABINDING. А это означает, что нельзя будет в используемые таблицы вносить изменения, поскольку у 1ски штатными средствами это drop и create table. То есть придется перед обновлением конфигурации удалять представление, а потом пересоздавать его.

+1, Но это часто стоит того. Главное иметь ввиду, как ведет себя index view в различных версиях SQL. Я однажды столкнулся свот этим: Index Scan и индексированное представление

Спасибо!

Буду иметь это в виду!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Индексы и/или представления в MS SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]