Re: Вопрос скорости

From
Vladimir Pavlikov (2:5020/400)
To
Vladimir Ilyashenko
Date
2006-02-25T04:05:50Z
Area
SU.DBMS.SQL
From: "Vladimir Pavlikov" <vvp@soil.msu.ru>

Hello, Vladimir!
You wrote to All on Thu, 23 Feb 2006 19:55:43 +0300:

 VI> Надо выбрать ИЗ  "TAB1.а" только те значения, которых нет В  "TAB2.y"
 VI> (AND TAB1.b='+')

В  случаях "выбора отсутствующего" чаще всего используется левое
объединение с фильтрацией на is null:

select tab1.* from tab1 left join tab2
on  tab1.a = tab2.y
where tab1.b = '+' and tab2.y is null;

Надеюсь, аксесс поддерживает такой синтаксис - по крайней мере,
он стандартный. Что до скорости - тут все зависит от реализаций.
Где-то может оказаться более быстрым not in select (или not exist) -
нужно пробовать. Но начать лучше именно с вышеприведенного -
возможно, им же и закончится :) Ну и индексы на поля объединения,
само собой. Если перечисленное не устроит - еще один повод
подумать о движках, имеющих оптимизатор....

 VI> ЗЫ Я в эхе только-только, и пока ФАКа не видел. Может кто подскажет
 VI> серьезный учебник из которого можно почерпнуть реальные практические
 VI> приемы составления SQL- запросов и пр. функций работы с базами. А то у
 VI> меня все больше для начинающих.

Воспользуйся предложенными мною в предыдущем письме. Грабер
суховат, но достаточно полон, и удобен как минимум в качестве
справочника. Кузнецов многословен и несколько.. э.э примитивен,
но для начального изучения в самый раз. Что до действительно
серьезного... Дейт сложноват для начинающего, но экономить
деньги на его книгах - грех. Именно книгах - читать с экрана
странички не лучший способ знакомства с серьезным чтивом.

With best regards, Vladimir Pavlikov.  E-mail: vvp@soil.msu.ru 


-- 
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5.3
 * Origin: Talk.Mail.Ru (2:5020/400)
SEEN-BY: 46/50 50/12 203 520 450/159 186 1024 451/30 454/9 461/43 132 640
SEEN-BY: 469/999 4614/20 4616/3 4625/8 4627/10 4641/444 5000/76 5000 5001/5001
SEEN-BY: 5006/1 5007/1 5010/53 70 5011/13 5012/23 46 5015/28 5019/31 5020/86
SEEN-BY: 5020/175 194 400 545 604 639 715 758 830 892 982 1042 1057 1200 1523
SEEN-BY: 5020/1604 1665 1909 1922 2013 2020 2238 4441 5021/3 29 5022/128
SEEN-BY: 5025/3 750 5026/10 14 45 5027/12 5029/32 5030/115 217 436 473 556 966
SEEN-BY: 5030/1063 1339 1900 5034/13 5035/38 5036/1 5040/47 5042/13 5045/7
SEEN-BY: 5047/47 5049/1 5051/15 5053/16 5054/1 8 9 28 35 37 45 63 67 5055/95
SEEN-BY: 5057/1 5059/9 5060/88 5061/15 5062/1 5066/18 5070/1222 5077/70
SEEN-BY: 5080/68 1003 5081/2 5082/6 5083/21 5084/32 5085/13 5090/106 5093/27
SEEN-BY: 5095/20 5099/133 6000/1 12 6009/1
PATH: 5020/400 4441 545 5054/1 37