Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Какая разница в производительности? / 12 сообщений из 12, страница 1 из 1
17.04.2002, 14:08
    #32028106
Underking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая разница в производительности?
Какая разница в производительности между этими запросами?

SELECT table1.Name1, table1.Name2, sum(table2.Price)
FROM table1 INNER JOIM table2 on table1.Name2=table2.Name2
GROUP BY table1.Name1, Table2.Name2

SELECT table1.Name1, Table1.Name2, sel_table.Summa
FROM table1 INNER JOIN
(SELECT Name2, sum(Price) AS Summa FROM table2 GROUP BY Name2) AS sel_table
ON table1.Name2=sel_table.Name2
...
Рейтинг: 0 / 0
17.04.2002, 16:00
    #32028125
Garya
Garya Привилегированный пользователь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая разница в производительности?
Так загляни в план выполнения запроса - и увидишь. А план выполнения строится оптимизатором не только по синтаксису запроса, но и с учетом статистик по индексам. Врядли в данном случае можно сказать, какой из синтаксисов сгенерит гарантированно более оптимальный план выполнения запроса (IMHO).
...
Рейтинг: 0 / 0
17.04.2002, 16:23
    #32028127
Underking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая разница в производительности?
Похоже я этим не пользовался, что есть план выполнения запроса?

Собственно говоря меня интересует одна вещь, не является ли второй запрос "кривым", т.е. будет ли он выполняться примерно столько же времени, сколько и первый, причем как для маленьких таблиц, так и для огромных? Не будет ли он на порядок медленней работать?
Просто мне сказали, что по всем правилам надо писать именно первый вариант. Второй вариант - это не правильно, и он будет выполняться ЗНАЧИТЕЛЬНО дольше первого варианта.
...
Рейтинг: 0 / 0
18.04.2002, 01:25
    #32028135
sysop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая разница в производительности?
А Вы, как я понял, хотите получить вторым запросом обновляемый набор данных?
...
Рейтинг: 0 / 0
18.04.2002, 05:45
    #32028144
Underking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая разница в производительности?
Нет, обновляемый набор данных меня не интересует.
Просто когда у меня есть уже какой-то запрос, в случае его доработки ему легче подключить SELECT (как во втором варианте), а не дорабатывать до первого варианта.
В частности мне понадобилось добавить эту самую сумму. До этого основной запрос даже не имел ни одного GROUP BY, а пришлось добавить их штук 15, да еще и условие кое-какое. На пустой базе проблематично оценить скорость.
Маня интересует, как следует поступать в моем случае? Можно ли считать корректным добавление простого подзапроса?
...
Рейтинг: 0 / 0
18.04.2002, 06:45
    #32028152
Dankov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая разница в производительности?
Разница таки есть, но отнюдь не в производительности. Если в таблице Table1 поле Name2 неуникально, то запросы будут давать разные результаты.
По производительноси запросы примерно одинаковы.
...
Рейтинг: 0 / 0
18.04.2002, 07:16
    #32028157
Underking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая разница в производительности?
В моем случае Name2 уникально, но мы допустим что оба эти запроса работают правильно, т.е. возвращают что надо. В данный момент вопрос стоит в производительности и "корявости". В одном из форумов мне сказали, что подзапрос будет работать медленней. У меня много таблиц, в запросе их подключается по несколько штук, записей в таблицах планируется сотни тысяч. Меня интересует производительность исходя из этих условий. Набить базу данными сейчас проблематично, т.к. это понадобятся не случайные данные, поэтому пытаюсь выяснить теоретически.
Если запрос второго типа будет работать раза в два медленней, это вообщем допустимо. Но если разница будет больше, будет неприятно.
...
Рейтинг: 0 / 0
18.04.2002, 09:29
    #32028181
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая разница в производительности?
...
Рейтинг: 0 / 0
18.04.2002, 09:49
    #32028184
Dankov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая разница в производительности?
При уникальном Name2 два этих запроса эквивалентны и производительность различаться не будет (на MSSQL), так это есть на самом деле одно и тоже, а планы запросов будут очень близки.
...
Рейтинг: 0 / 0
18.04.2002, 10:51
    #32028194
Underking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая разница в производительности?
Объясните кто-нибудь, что такое "план запросв" и как его посмотреть.
...
Рейтинг: 0 / 0
18.04.2002, 11:02
    #32028197
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая разница в производительности?
Viewing the Query Execution Plan
If there is no query in the query panel, open a saved query or create a new query.

On the Query menu, click Show Execution Plan or press CTRL+K to turn it on.

Note This option works only when connected to an instance of Microsoft® SQL Server™ version 7.0 or later.

Execute the query by pressing F5, or on the Query menu, click Query Execute.

Position the cursor over graphical elements to reveal additional execution plan information.
...
Рейтинг: 0 / 0
18.04.2002, 11:45
    #32028206
Underking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая разница в производительности?
А нет ли где описания этого плана запроса, чтоб по русски расписали, что где и к чему?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Какая разница в производительности? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]