|
|
|
Почему не используется индекс в запросе..?
|
|||
|---|---|---|---|
|
#18+
есть ХП которая делает выборку create procedure ORDERS_GET( IDORDER integer) returns( NAME varchar(20)) as begin for select NAME from ORDERS where (:IDORDER is null or ID_ORDER = :IDORDER) into :NAME do suspend; end такая процедура хороша тем, что если нам надо выбрать все заказы или только один, то мы запускаем процедуру с параметром null либо со значением. и когда запускаем процедуру с известным параметром то в запросе не используется индекс!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 13:38 |
|
||
|
Почему не используется индекс в запросе..?
|
|||
|---|---|---|---|
|
#18+
А индекс как у тебя построен? С учетом Null - ов али нет? Если не, то - не обессудь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 13:45 |
|
||
|
Почему не используется индекс в запросе..?
|
|||
|---|---|---|---|
|
#18+
Вообще-то в случае когда сравнивается входной параметр с чем-то в условии where, индексы в FB не используются. Делай так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 13:54 |
|
||
|
Почему не используется индекс в запросе..?
|
|||
|---|---|---|---|
|
#18+
Вообще-то в случае когда сравнивается входной параметр с чем-то в условии where, индексы в FB не используются. Поподробнее можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 13:58 |
|
||
|
Почему не используется индекс в запросе..?
|
|||
|---|---|---|---|
|
#18+
mv Как ты себе представляешь поиск по индексу :IDORDER is null , где IDORDER - переменная ? Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 14:36 |
|
||
|
Почему не используется индекс в запросе..?
|
|||
|---|---|---|---|
|
#18+
where (:IDORDER is null or ID_ORDER = :IDORDER) Ну, с одной стороны - никак, типа, если входная переменная - Null, то (в данном случае) берем все подряд, тут и индекс никакой не нужен, и вторая часть условия (после or) не должна анализироваться... А если Pavel Alekseev ошибся, и ему нужны все записи с null в поле Id_Order, и записи, совпадабщие с параметрами, то, если он напишет: where (ID_ORDER is null or ID_ORDER = :IDORDER) - индекс по id_oreder использоваться будет? Может быть, если он построен с особыми опциями, включающими Null - значения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 14:56 |
|
||
|
Почему не используется индекс в запросе..?
|
|||
|---|---|---|---|
|
#18+
Во втором случае конечно будет использоваться! Но Pavel Alekseev имел ввиду как раз именно :IDORDER IS NULL. . автортакая процедура хороша тем, что если нам надо выбрать все заказы или только один, то мы запускаем процедуру с параметром null либо со значением. Best regards, Dnico ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 15:07 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=477&tid=1578849]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 374ms |

| 0 / 0 |
