|
![]() |
#1 |
Участник
|
На всякий случай.
Если поля DataAreaId указывать в качестве ключа связи, то скорость выполнения запроса резко проседает по сравнению с указанием конкретного значения DataAreaId. Не на порядки, конечно, но в несколько раз. Поэтому, с точки зрения производительности, выгоднее сделать несколько последовательных запросов меняя значение DataAreaId (если необходимо, объединить потом по UNION ALL), чем один общий запрос в котором указано объединение таблиц в том числе и по DataAreaId Т.е. запрос вида X++: select * from custTrans inner join custTable on custTable.AccountNum = custTrans.AccountNum and custTrans.DataAreaId = custTable.dataAreaId X++: select * from custTrans inner join custTable on custTable.AccountNum = custTrans.AccountNum where custTrans.DataAreaId = 'dt1' and custTable.dataAreaId = 'dt1' union all select * from custTrans inner join custTable on custTable.AccountNum = custTrans.AccountNum where custTrans.DataAreaId = 'dt2' and custTable.dataAreaId = 'dt2' (...)
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
![]() |
#2 |
Участник
|
Цитата:
а как "посмотреть какой из них оптимизатор признает наиболее шустрым"? Цитата:
Если используется with, то SQL нормально поднимает константы. |
|
![]() |
#3 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: mazzy (5). |