| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > оптимизировать запрос mssql |
| Автор: lBugl 7.9.2010, 11:29 | ||
| идея примерно такая: обновлять данные в таблице если они существуют и добавлять если нет (table1) запрос:
как это можно оптимизировать? (вроде слышал что left join медленный) |
| Автор: Zloxa 7.9.2010, 11:45 |
http://msdn.microsoft.com/ru-ru/library/bb510625(v=SQL.100).aspx А если попробовать попробовать, как оно ощущается? |
| Автор: lBugl 7.9.2010, 16:14 | ||
| спасибо за предложение. почитал переделал вот так:
получаю такие ошибки: Server: Msg 170, Level 15, State 1, Line 22 Line 22: Incorrect syntax near 'merge'. Server: Msg 156, Level 15, State 1, Line 23 Incorrect syntax near the keyword 'as'. а вот из-за чего уже не знаю... зы: сервер ms sql server 2000 |
| Автор: Zloxa 7.9.2010, 16:17 |
вот поэтому. |
| Автор: lBugl 7.9.2010, 16:20 |
| ну тогда вопрос прежний... можно ли оптимизировать код в 1-м посте? если да, жду совета или намёка =) |
| Автор: lBugl 8.9.2010, 14:40 | ||
вот этот подзапрос используется в обоих запросах
решил его вынести... почитал про курсоры, временные таблица наткнулся на тип table... курсоры как понял медленней поэтому с ними даже не пробовал делать, а вот через временную таблицу и переменную время выполнения примерно одинаковое правда вот для ВТ смог указать состовной pk, а для переменной типа table нет =\ мб это тоже бы повлияло на скорость. делал вот так: alter table @tmp add primary key(t1, t2) //error alter table #tmp add primary key(t1, t2) //good сейчас смотрю в сторону индексов, но думаю они не понадобятся для временной таблицы т.к. кол-во записей там до пару тысяч, а вот исходную таблицу возможно проиндексирую по полям которые входят во временную... зы: что б это не напоминало блог, я всё так делаю? =) |
| Автор: Zloxa 8.9.2010, 19:02 |
| lBugl, с чего Вы вообще взяли, что приведенный вами фрагмент кода следует оптимизировать? Ранее озвученные Вами предпосылки лишь подчеркивают сомнительность этой затеи. |
| Автор: lBugl 9.9.2010, 11:22 | ||||
фрагмент кода в посте перед вашим или в 1-м? если в первом, то меня не устраивает его время выполнения: долго. если в предпоследнем моём, то этот подзапрос встречается в обоих запросах и я подумал что было бы оптимальней если он просчитается один раз + затраты на таблицу...
какие предпосылки и какому коду мешают? =) немножко не понимаю зы: в результате сделал временную таблицу, добавил индексы в базовую и код стал выполняться в 2-3 раза быстрее... причём существенную роль сыграла именно таблица, а не индексы. но наверное это конкретно мой случай |