![]() |
|
Конструкция В или соединение таблиц? | ☑ | ||
---|---|---|---|---|
0
SYS-eva
12.05.12
✎
12:26
|
Добрый день коллеги! собственно вопрос:
Какой вариант запроса оптимален? Вариант 1: //*************************************************************** ВЫБРАТЬ ТаблицаВодителей.Период КАК Период, ТаблицаВодителей.Водитель КАК Водитель, ТаблицаВодителей.Транспорт КАК Транспорт ПОМЕСТИТЬ Водители ИЗ РегистрСведений.РегистрСведений_тест.СрезПоследних(КОНЕЦПЕРИОДА(&Дата, ДЕНЬ), Транспорт = &Транспорт) КАК ТаблицаВодителей ИНДЕКСИРОВАТЬ ПО Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(ПериодыРегистра.Период) КАК Период ПОМЕСТИТЬ ТаблицаПериода ИЗ РегистрСведений.РегистрСведений_тест.СрезПоследних(КОНЕЦПЕРИОДА(&Дата, ДЕНЬ), Транспорт = &Транспорт) КАК ПериодыРегистра ИНДЕКСИРОВАТЬ ПО Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Водители.Водитель, Водители.Транспорт, Водители.Период ИЗ ТаблицаПериода КАК ТаблицаПериода ВНУТРЕННЕЕ СОЕДИНЕНИЕ Водители КАК Водители ПО ТаблицаПериода.Период = Водители.Период //******************************************************************** Вариант 2: ВЫБРАТЬ ТаблицаВодителей.Период КАК Период, ТаблицаВодителей.Водитель КАК Водитель, ТаблицаВодителей.Транспорт КАК Транспорт ПОМЕСТИТЬ Водители ИЗ РегистрСведений.РегистрСведений_тест.СрезПоследних(КОНЕЦПЕРИОДА(&Дата, ДЕНЬ), Транспорт = &Транспорт) КАК ТаблицаВодителей ИНДЕКСИРОВАТЬ ПО Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(ПериодыРегистра.Период) КАК Период ПОМЕСТИТЬ ТаблицаПериода ИЗ РегистрСведений.РегистрСведений_тест.СрезПоследних(КОНЕЦПЕРИОДА(&Дата, ДЕНЬ), Транспорт = &Транспорт) КАК ПериодыРегистра ИНДЕКСИРОВАТЬ ПО Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Водители.Водитель, Водители.Транспорт, Водители.Период ИЗ Водители КАК Водители ГДЕ Водители.Период В (ВЫБРАТЬ ТаблицаПериода.Период ИЗ ТаблицаПериода КАК ТаблицаПериода) Заранее спасибо. |
|||
1
МихаилМ
12.05.12
✎
12:29
|
об оптимальности вариантов запроса
имеет смысл говорить только в контексте конкретной субд |
|||
2
Deon
12.05.12
✎
12:30
|
А этот запрос возвратит не одну запись?
ВЫБРАТЬ МАКСИМУМ(ПериодыРегистра.Период) КАК Период ПОМЕСТИТЬ ТаблицаПериода ИЗ РегистрСведений.РегистрСведений_тест.СрезПоследних(КОНЕЦПЕРИОДА(&Дата, ДЕНЬ), Транспорт = &Транспорт) КАК ПериодыРегистра ИНДЕКСИРОВАТЬ ПО Период ; |
|||
3
SYS-eva
12.05.12
✎
12:31
|
да одну
|
|||
4
SYS-eva
12.05.12
✎
12:31
|
ИНДЕКСИРОВАТЬ ПО
Период тут явно лишнее)) |
|||
5
SYS-eva
12.05.12
✎
12:32
|
меня интересует третий запрос в пакете
|
|||
6
SYS-eva
12.05.12
✎
12:32
|
МихаилМ MSSQL
|
|||
7
acsent
12.05.12
✎
12:33
|
не так совсем нужно делать. тут нужно ручной разворот среза последних
|
|||
8
SYS-eva
12.05.12
✎
12:48
|
acsent - пример в студию и почему?
|
|||
9
KAO111
12.05.12
✎
13:06
|
(0) у меня на MS SQL в подобном случае оказался одинаковый план построения запроса как в условии В, так и в соединении.
Файловая версия когда то была быстрее в случае соединения таблиц. Но лучше конечно протестировать. |
|||
10
SYS-eva
12.05.12
✎
13:07
|
KAO111 спасибо - тема закрыта
|
|||
11
Deon
12.05.12
✎
13:07
|
(9) Вот мне кажется, что sql-ный запрос ваще одинаковый будет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |