Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 сравнить 2 запроса  [new]
M2k
Member

Откуда:
Сообщений: 136
прошу не судить меня строго за глупый вопрос, но мне это необходимо понять и надежда только на ВАС

есть 2 запроса, которые выполняют одно и тоже :
запрос 1
автор

declare @balans real,
@contract varchar(50)

select @contract = [contract] from [dbo].[STATUS] where id= '96981DAB-563C-4139-AE0E-D2DEDAC18C19'

select @balans = [balance] from [dbo].[Contract] where [contract] = @contract


запрос 2
автор

declare @balans real,
@contract varchar(50)

select @balans = [balance], @contract = [contract]
from [dbo].[Contract] where [contract] in (select[contract] from [dbo].[STATUS] where id= '96981DAB-563C-4139-AE0E-D2DEDAC18C19')


вопрос - какой из этих вариантов эффективнее, выполняется быстрее, и почему ?
заранее спасибо всем откликнувшимся
6 фев 14, 23:37    [15531578]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
sdet
Member

Откуда:
Сообщений: 463
M2k,
А вы в планы выполнения запросов вообще не смотрите?
6 фев 14, 23:58    [15531673]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
M2k
Member

Откуда:
Сообщений: 136
1 запрост
2 плана просмотра строк по 100% каждый


2 запрос
просмотр строк первой таблицы 29%
просмотр строк 2 таблицы 27%
Hach Match (Right Semi Join) 47%
7 фев 14, 01:47    [15531919]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
M2k
1 запрост
2 плана просмотра строк по 100% каждый


2 запрос
просмотр строк первой таблицы 29%
просмотр строк 2 таблицы 27%
Hach Match (Right Semi Join) 47%

Опубликуйте лучше сами планы
А также структуры таблиц и их индексы
7 фев 14, 10:11    [15532666]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
M2k
Member

Откуда:
Сообщений: 136
Glory,
таблица 1 status
id uniqueidentifier , status varchar(100), contract varchar(100)

таблица 2

contract varchar(100), balans real, param1 varchar(10), param2 varchar(10), param3 varchar(10),.... param15 varchar(10)

планы выполнения
1 запрост
2 плана просмотра строк по 100% каждый

2 запрос
просмотр строк первой таблицы 29%
просмотр строк 2 таблицы 27%
Hach Match (Right Semi Join) 47%

меня не интересуют мелкие отличия - мне хотелось бы понять основные отличия при большом количестве запросов (500- 5000 в секунду) (что быстрее и почему?) запросы выполняются в хранимой процедуре.
7 фев 14, 11:40    [15533273]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
M2k
планы выполнения
1 запрост
2 плана просмотра строк по 100% каждый

2 запрос
просмотр строк первой таблицы 29%
просмотр строк 2 таблицы 27%
Hach Match (Right Semi Join) 47%


no comments....
7 фев 14, 11:46    [15533322]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
Addx
Member

Откуда:
Сообщений: 957
Вообще-то,
совсем не очевидно, что эти запросы вообще эквивалентны.
Я запросто приведу пример, когда они выдают разные результаты.
Мы же не знаем ничего о Вашей базе.
7 фев 14, 12:04    [15533475]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
Addx
Member

Откуда:
Сообщений: 957
Maxx
M2k
планы выполнения
1 запрост
2 плана просмотра строк по 100% каждый

2 запрос
просмотр строк первой таблицы 29%
просмотр строк 2 таблицы 27%
Hach Match (Right Semi Join) 47%


no comments....


Это точно :)
7 фев 14, 12:04    [15533479]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
M2k
Member

Откуда:
Сообщений: 136
Addx,
прошу прощения за не четкость формулирования вопроса - это скорее связано с тем, что я не совсем понял, что именно необходимо для ответа на мой вопрос

по поводу таблиц я уже привел их структуру
таблица 1
id uniqueidentifier ,
status varchar(100),
contract varchar(100)

таблица 2
contract varchar(100),
balans real,
param1 varchar(10),
param2 varchar(10),.... param15 varchar(10)

2 линейные таблицы в первой хранятся данные - индитификатор, статус и номер контракта
во второй номер контракта равный номеру в первой таблице , баланс , и ряд параметров отвечающих за настройку и отображение данных

этими запросами мне необходимо получить данные из этих 2 таблиц

К сообщению приложен файл. Размер - 14Kb
7 фев 14, 12:48    [15533844]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
M2k
Member

Откуда:
Сообщений: 136
если нужны более детальные данные скажите какие именно ?
7 фев 14, 12:50    [15533865]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
inner join ???
7 фев 14, 12:51    [15533871]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
Судя по планам, никаких индексов вообще нет
Поэтому 2ой запрос дороже. Потому что серверверу элементарно придется выполнять на одну операцию Hash match больше
7 фев 14, 12:51    [15533874]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
M2k
Member

Откуда:
Сообщений: 136
Glory,

а на сколько это критично при больших количествах повторения запросов ?
(количество записей в каждой таблице ориентировочно до 100 000, количество запросов 500-5000 в секунду)
7 фев 14, 13:00    [15533941]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
M2k
а на сколько это критично при больших количествах повторения запросов ?

А в чем мерять то ?
У вас есть требования ко времени выполнения ?
7 фев 14, 13:02    [15533962]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
Addx
Member

Откуда:
Сообщений: 957
Там ключи есть вообще? И индексы?
Пока мой вопрос остается в силе.
Я не вижу эквивалентности запросов.
Догадываюсь, что это так.
Но заведу такие данные, что результат будет разный.
7 фев 14, 13:19    [15534139]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
M2k
Member

Откуда:
Сообщений: 136
Glory,

требования только одно чем быстрее тем лучше
7 фев 14, 13:20    [15534145]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
M2k
требования только одно чем быстрее тем лучше

Быстрее чем где ? Чем на 386 интеле без сопроцессора и 1Мб памяти ?
7 фев 14, 13:22    [15534160]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
M2k
Member

Откуда:
Сообщений: 136
Addx,
ключей нет
индексы тоже нет
уникальность значений контролирует внешняя программа, повторения в таблице contract исключено
7 фев 14, 13:26    [15534199]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
Addx
Member

Откуда:
Сообщений: 957
M2k
Addx,
ключей нет
индексы тоже нет
уникальность значений контролирует внешняя программа, повторения в таблице contract исключено


Про таблицу STATUS то же самое?
И при этом задаются вопросы о производительности.
Сервер тоже знает, что "повторение значений в таблице contract исключено" ?
Или должен вопросы на форуме об этом задавать? Заведите ключи и индексы для начала.
7 фев 14, 13:30    [15534237]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
M2k
Member

Откуда:
Сообщений: 136
Glory,

имеется в виду насколько выполнение будет быстрее с использованием ключей , индексов или иных механизмов или без использования
я не имею в виду точные значения - достаточным ответом будет (быстрее в разы или не значительно )
7 фев 14, 13:30    [15534243]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
M2k
Member

Откуда:
Сообщений: 136
Addx,

понял спасибо
7 фев 14, 13:32    [15534255]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
M2k
достаточным ответом будет (быстрее в разы или не значительно )

Быстрее. Особенно с уникальными индексами
7 фев 14, 13:33    [15534266]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
M2k
Member

Откуда:
Сообщений: 136
Glory,

спасибо
7 фев 14, 13:35    [15534276]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
Addx
Member

Откуда:
Сообщений: 957
M2k,

Запустите и посмотрите. Вам уже советы дали.
Или Вы предлагаете участникам форума промоделировать
Вашу ситуацию и выяснить, какая именно будет разница?
7 фев 14, 13:35    [15534277]     Ответить | Цитировать Сообщить модератору
 Re: сравнить 2 запроса  [new]
M2k
Member

Откуда:
Сообщений: 136
M2k,

я так понял вариант 2 запроса или один вложенный в данной ситуации разницы не будит ни какой правильно ?
7 фев 14, 13:36    [15534287]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить