![]() |
|
Модераторы: Akina |
![]()
|
|
| Unregistered |
|
|||
|
Unregistered |
Здравствуйте.
операция Update занимает много времени. Запрос такой: UPDATE MyTable SET SIGNAL_STATE=1 WHERE (SIGNAL_STATE=2 AND CHANNEL='CH1') время ~250 ms. Что можно сделать? База ~150 мб. LDF убитый (не пухнет). |
|||
|
||||
| Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: нет Всего: 22 |
пропиши ключевые поля на таблицу...например CHANNEL
|
|||
|
||||
| shilnik |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 377 Регистрация: 22.12.2003 Репутация: нет Всего: 1 |
Да, индекс по СHANNEL'у поможет.
А еще тригеры тормозят |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
спасибо. Тригеры действительно тормозят, причем конкретно (если обрабатывают метод update). И еще подскажите, чем руководствоваться при выборе ключевого поля. У меня с этим проблемы т.к. с базами серьезно занимаюсь недавно.
|
|||
|
||||
| shilnik |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 377 Регистрация: 22.12.2003 Репутация: нет Всего: 1 |
Какие поля чаще всего указываешь в конструкции WHERE те и индексируй. Еще поля, по которым есть связь с другими таблицами. Только не перестарайся, а то INSERT, UPDATE, DELETE будет долго выполняться и база много места займет.
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Если есть выборки, которые требуют условия по этому полю и размер выборки будет меньше 20-25% от общего числа записей, то это уже претендент на индекс. Кроме этого можно делать индексы сразу на комбинацию полей, если это позволяется базой и есть запросы с использованием этой комбинации. Также бывает, что SQL-сервер при автоматическом выборе индекса (когда составляется план запроса, сервер пытается использовать тот индекс, который он считает лучшим) может ошибиться. И надо в этом случае используя синтаксис конкретного SQL подсказать лучшее решение. Само собой, что очень большое количество всяких индексов будет сильно тормозить изменение в базе. Поэтому надо искать некий компромис. Что касается конкретно MS SQL, то там ее есть такой запрос как UPDATE STATISTICS. Идея в том, что при росте базы приоритеность индексов может поменятся - станет важнее использовать уже другой индекс. При апдейте сервер пытается перестроить построение запроса на основании уже более новой информации. И наконец - читайте документацию и учите английский язык. |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
Спасибо за развернутый ответ. |
|||
|
||||
![]()
|
| Правила форума "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. |