|
Оптимизация запроса | ☑ | ||
---|---|---|---|---|
0
Alex_MA
03.03.17
✎
08:39
|
Доброго утра!
Подскажите пожалуйста как оптимизировать запрос: ВЫБРАТЬ vscСреднемесячныйРасходЛС.ЛицевойСчет КАК ЛицевойСчет ПОМЕСТИТЬ ТаблицаРасчетПоСреднему ИЗ Документ.vscСреднемесячныйРасходЛС КАК vscСреднемесячныйРасходЛС ГДЕ vscСреднемесячныйРасходЛС.Период МЕЖДУ &ПарамДатаОт И &ПарамДатаДо ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ vscЛицевыеСчета.Ссылка КАК РезультатСсылка ИЗ Справочник.vscЛицевыеСчета КАК vscЛицевыеСчета ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаРасчетПоСреднему КАК ТаблицаРасчетПоСреднему ПО vscЛицевыеСчета.Ссылка = ТаблицаРасчетПоСреднему.ЛицевойСчет ГДЕ ТаблицаРасчетПоСреднему.ЛицевойСчет ЕСТЬ NULL И vscЛицевыеСчета.ПодразделениеОрганизации = &ПарамПодразделение В таблице vscСреднемесячныйРасходЛС ~ 11млн. записей В таблице vscЛицевыеСчета ~ 650 тыс. записей. Поле Период - индексировано. Но все равно выполняется долго, т.к. в индексе по периоду отсутствуют данные по лицевому счету. Поэтому MS SQL решает сканировать индекс по л/счету, а потом объединения хешированием. Спасибо. |
|||
1
1dvd
03.03.17
✎
08:40
|
сгруппировать первый запрос
|
|||
2
vi0
03.03.17
✎
08:43
|
зачем тебе временная таблица?
|
|||
3
Рэйв
03.03.17
✎
08:57
|
(0)Индексировать сделай в ВТ
|
|||
4
КофеIN
03.03.17
✎
15:30
|
ВЫБРАТЬ РАЗЛИЧНЫЕ и в первом и во втором запросе
|
|||
5
Fragster
гуру
03.03.17
✎
15:34
|
ОФФ: не первый раз вижу префикс в другой раскладке. Это такая особая форма мазохизма?
|
|||
6
vi0
03.03.17
✎
15:35
|
(4) во втором не нужно
|
|||
7
КофеIN
03.03.17
✎
15:37
|
Можно так но не уверен что быстрее:
ВЫБРАТЬ РАЗЛИЧНЫЕ vscЛицевыеСчета.Ссылка КАК РезультатСсылка ИЗ Справочник.vscЛицевыеСчета КАК vscЛицевыеСчета ГДЕ vscЛицевыеСчета.ПодразделениеОрганизации = &ПарамПодразделение И НЕ vscЛицевыеСчета.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ vscСреднемесячныйРасходЛС.ЛицевойСчет КАК ЛицевойСчет ИЗ Документ.vscСреднемесячныйРасходЛС КАК vscСреднемесячныйРасходЛС ГДЕ vscСреднемесячныйРасходЛС.Период МЕЖДУ &ПарамДатаОт И &ПарамДатаДо) |
|||
8
КофеIN
03.03.17
✎
15:39
|
согласен во втором не нужен))
|
|||
9
vi0
03.03.17
✎
15:46
|
(7) правильно, что не уверен
|
|||
10
Fragster
гуру
03.03.17
✎
15:47
|
можно попробовать так:
Где не 1 в (выбрать первые 1 из ВЫБРАТЬ vscСреднемесячныйРасходЛС.ЛицевойСчет КАК ЛицевойСчет ИЗ Документ.vscСреднемесячныйРасходЛС КАК vscСреднемесячныйРасходЛС ГДЕ vscСреднемесячныйРасходЛС.Период МЕЖДУ &ПарамДатаОт И &ПарамДатаДо ) |
|||
11
Fragster
гуру
03.03.17
✎
15:47
|
можно попробовать так:
Где не 1 в (выбрать первые 1 из ВЫБРАТЬ vscСреднемесячныйРасходЛС.ЛицевойСчет КАК ЛицевойСчет ИЗ Документ.vscСреднемесячныйРасходЛС КАК vscСреднемесячныйРасходЛС ГДЕ vscЛицевыеСчета.Ссылка = vscСреднемесячныйРасходЛС .ЛицевойСчет И vscСреднемесячныйРасходЛС.Период МЕЖДУ &ПарамДатаОт И &ПарамДатаДо ) |
|||
12
Fragster
гуру
03.03.17
✎
15:48
|
индекс по лицевому счету нужен
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |