![]() |
|
Модераторы: Akina |
![]()
|
|
| SATYR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 24.5.2005 Репутация: нет Всего: нет |
Вопрос вот в чем
Есть таблица с "сырыми" данными. Для улучшения работы с ними что лучше предпочесть , с точки зрения снижения затрат ресурсов сервера и повышения быстродействия(таблица большая): 1) View над этой таблицей 2) insert triger приводяший данные к желаемому виду при их занесение в таблицу и ежели можно то почему? |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 15 Всего: 35 |
SATYR, так все зависит от соотношения количества Insert-ов и select-ов.
Если у тебя один insert и 100 select-ов, то думаю и сам можешь догадаться что предпочтительнее. -------------------- Никогда не говори никогда |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Может тогда лучше вставлять через stored procedure ? Она уже будет скомпилирована, работать будет быстрее. Да и проблем меньше - всегда можно логику сменить. Триггер имеет больше ограничений все-таки.
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
А может один раз сырые данные привести к нормальному виду, а?
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| SATYR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 24.5.2005 Репутация: нет Всего: нет |
они (данные) дополняются и колличество Insert-ов изрядно, но Select тоже возвращает большое колличество строк.
я склоняюсь к этому варианту, но вопрос в том значительно ли тригер будет влиять на скорость внесения данных. И есчо вопрос для собственного ликбеза.) Подскажите когда выполняется View: при обращение к нему во From, либо сервер создает его заблагавременно и хранит в свое пространстве как некую виртуальную таблицу? |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Если обращение идет часто, то может долгое время в кэше лежать. Я еще раз предлагаю делать через процедуру - тогда сама таблица будет лочится на меньшее время. Еще можно оттуда автополя убрать. Возможно было бы здорово вставлять в несколько таблиц, а просмотр сливал бы их в одну. Хотя это чисто теоретические измышления. |
|||
|
||||
| SATYR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 24.5.2005 Репутация: нет Всего: нет |
Использовать хранимку думаю не получится по одной простой причине т.к. занесением данных в БД занимается определенная софтина которую писал не я. Соответственно она и формирует Insert. Я думаю использовать тригер INSTEAD OF INSERT только опять одна зупынка выходит если использовать конструкцию Insert то вроде все как надо, но если хочеш использовать INSERT... SELECT... то добавляется только одна строка из набора. |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 5 Всего: 207 |
Триггер - один из самых медленных объектов. Использовать только тогда когда без него не обойтись.
View - довольно приятная штука, особенно в 2000 поддерживает создание индексов, но к повышению производительности он не приведёт однозначно. По сути он ничем не отличается от запроса на самой таблице... его можно использовать для чего угодно, но только не с целью повышения производительности. Я бы рекомендовал - 1) нормализовать таблицу, 2) создать нужные индексы... 3) Если надо делать периодические не очень частные отчёты - то делать TDS или репликацию таблицы в другую базу данных и делать отчёты на копии, а не на живой таблице 4) Разобраться с уровнем изоляции запросов на эту таблицу и накладываемыми блокировками при каждом запросе. По умолчанию SQL Server больше заботится об аккуратности, чем о быстродействии, но во многих случаях это может быть абсолютно излишне -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |