ST> Привет!

 ST> Alexandr Kochmin wrote:
 ST>> странно. А индекс у тебя не используетсчя в плане, который FK между
 ST>> таблицами? С ним тормозит, а вот без него все очень приятно.

 ST> Хм. А как без него джойнить с главной?

этот индекс в плане все портит.
select count(*)
from s_goods join goods on s_goods.goodscode=goods.goodscode
where s_goods.s_name starting with :n
План
PLAN JOIN (GOODS NATURAL,S_GOODS INDEX (S_GOODS_IDX2,RDB$FOREIGN219))

Адаптированный план
PLAN JOIN (GOODS NATURAL,S_GOODS INDEX (S_GOODS_IDX2,FK_S_GOODS_TO_GOODS_1))

------ Performance info ------
Prepare time = 16ms
Execute time = 21s 250ms
Avg fetch time = 21 250,00 ms
Current memory = 8 196 096
Max memory = 8 201 216
Memory buffers = 2 000
Reads from disk to cache = 10 506
Writes from cache to disk = 0
Fetches from cache = 1 282 354


select count(*)
from s_goods join goods on s_goods.goodscode+0=goods.goodscode
where s_goods.s_name starting with :n

План
PLAN JOIN (S_GOODS INDEX (S_GOODS_IDX2),GOODS INDEX (RDB$PRIMARY42))

Адаптированный план
PLAN JOIN (S_GOODS INDEX (S_GOODS_IDX2),GOODS INDEX (INTEG_152))

------ Performance info ------
Prepare time = 0ms
Execute time = 63ms
Avg fetch time = 63,00 ms
Current memory = 8 196 096
Max memory = 8 201 216
Memory buffers = 2 000
Reads from disk to cache = 898
Writes from cache to disk = 0
Fetches from cache = 15 625

видишь, ускорение в 300 раз.



 ST>>> Дык без них никуда. В прайсе: К50-16 100В 50МК 10%, а юзер набирает:
 ST>>> К50-16 50-100
 ST>> 
 ST>> да, есть такое. Но ведь юзеру всеравно не скажешь, как этими ИЛИ и И
 ST>> пользоваться. И автоматически не разрулить по-моему тоже.

 ST> Элементарно :-) Слова бьются на группы буквы-цифры-буквы и т.д, в
 ST> результате ищем:
 ST> К & 50 & 16 & 100

хм... надо подумать.


--
С уважением
Кочмин Александр


Ответить