Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.03;
Скачать: CL | DM;

Вниз

Какой запрос ОПТИМАЛЬНЕЕ   Найти похожие ветки 

 
Sectey ©   (2003-10-14 11:05) [0]

уменя есть таблица:
Client
id - код клиента
subid - код группы клиентов
name - имя клиента

я знаю код клиента мне необходимо выбрать всех клиентов входящих в туже группу что и извесны.

Я знаю два способа написания запроса, Но не знаю какой из них ОПТИМАЛЬНЕЕ.

SELECT c.id, c.name from client c
WHERE c.subid in (SELECT cc.subid FROM client cc WHERE cc.id = :id GROUP BY cc.subid)

или

SELECT с2.id, с2.name
FROM Client с1 INNER JOIN Client с2 ON с1.subid = с2.subid
WHERE (с1.id =:id)


 
Reindeer Moss Eater ©   (2003-10-14 11:06) [1]

План конкретного сервера расскажет про это


 
Sectey ©   (2003-10-14 11:07) [2]

>Reindeer Moss Eater ©

???


 
Reindeer Moss Eater ©   (2003-10-14 11:08) [3]

!!!


 
Sectey ©   (2003-10-14 11:13) [4]

>Reindeer Moss Eater ©
>План конкретного сервера расскажет про это

Что это значит?


 
asp ©   (2003-10-14 11:14) [5]

DBMS?


 
Johnmen ©   (2003-10-14 11:15) [6]

SELECT c.id, c.name from client c
WHERE c.subid = (SELECT cc.subid FROM client cc WHERE cc.id = :id)


 
Sergey13 ©   (2003-10-14 11:15) [7]

Скорее всего будет
SELECT c.id, c.name from client c
WHERE c.subid=(SELECT cc.subid FROM client cc WHERE cc.id = :id)


 
Anatoly Podgoretsky ©   (2003-10-14 11:18) [8]

А щачем тебе гадать, попробуй выполнить оба запроса и измерить время, не проще ли и главное данные будут реальные, а не того сервера.


 
Sergey13 ©   (2003-10-14 11:25) [9]

2Johnmen © (14.10.03 11:15) [6]
8-) Обогнал.

2Anatoly Podgoretsky © (14.10.03 11:18) [8]
То же не факт (данные в кэше сервера). План то он понадежнее.


 
asp ©   (2003-10-14 11:44) [10]

И все же неплохо было бы знать СУБД.
Эксперимент на DB2 показал, что на оба запроса формируется одинаковый план. И оба запроса оптимизируются к:

SELECT Q2.ID AS "ID"
FROM EXP.GOODS AS Q1, EXP.GOODS AS Q2
WHERE (Q1.ID = :?) AND (Q2.GROUP_GOODS = Q1.GROUP_GOODS)


Пардон за измененные наименования таблиц и столбцов :)


 
Reindeer Moss Eater ©   (2003-10-14 11:49) [11]

Эксперимент на DB2 показал, что на оба запроса формируется одинаковый план.

Эксперимент проведен на таблицах не автора вопроса. Поэтому дает не обязательно адекватный результат


 
asp ©   (2003-10-14 11:56) [12]

Reindeer Moss Eater © (14.10.03 11:49) [11]>
В общем случае зависит от фрагментирования таблиц, набора индексов и результатов статистики.


 
Reindeer Moss Eater ©   (2003-10-14 11:58) [13]

Поэтому и было сказано [1]


 
asp ©   (2003-10-14 12:20) [14]

Но это уже IMHO текущая работа администратора БД (статистики...) по поддержке базы данных. Вопрос уходит в сторону сопровождения БД.



Страницы: 1 вся ветка

Текущий архив: 2003.11.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
1-8490
IGORYOK
2003-10-23 20:24
2003.11.03
try a:=StrToInt(b) except on EConvertError do ...


1-8453
Denisiy
2003-10-21 17:12
2003.11.03
Напомните плз, как кавычку в строковой переменной представить?


1-8362
Master
2003-10-23 04:53
2003.11.03
Как определить букву СD-ROMa? GetDriveType?


3-8287
alxx
2003-10-13 17:28
2003.11.03
Послать сообщение пользователю БД


3-8281
Tommy
2003-10-13 23:11
2003.11.03
Подскажите пожалуйста: MIDAS работает с базами mdb ?