
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
31.03.2004, 14:09
|
|||
|---|---|---|---|
Индексы и хранимые процедуры |
|||
|
#18+
Есть процедура, см. ниже Дак вот если в предикате поставить 'Like' вместо '=', то индекс перестаёт использоваться и соответсвенно скорость запроса падает раз в 100. Почему так? ALTER PROCEDURE VVV ( I_FAM VARCHAR(30), I_IMA VARCHAR(30), I_OTCH VARCHAR(30), I_ULIC VARCHAR(30), I_DOM VARCHAR(10), I_NKVA VARCHAR(10)) RETURNS ( NUM INTEGER, FAM VARCHAR(30), IMA VARCHAR(30), OTCH VARCHAR(30), ADRES VARCHAR(30), DOM VARCHAR(10), NKVA VARCHAR(10)) AS begin for select nza, fam, ima, otch from kart1 where FAM=:I_FAM {Если вместо = поставить like индекс не используеться} into :NUM, :FAM, :IMA, :OTCH do for select ulic, dom, nkva from propis where nza=:NUM and flagp='T' into :ADRES, :DOM, :NKVA do suspend; end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2004, 14:33
|
|||
|---|---|---|---|
|
|||
Индексы и хранимые процедуры |
|||
|
#18+
Для LIKE :param индекс не может использоваться. Ибо сервер на знает, а может ты там в параметр понапихаешь % всяких и т.п. Если дестаточно совпадения по начальным буквам, то используй STARTING WITH :param ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=40&mobile=1&tid=1578933]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
177ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 491ms |

| 0 / 0 |
