powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Индексы и хранимые процедуры
2 сообщений из 2, страница 1 из 1
Индексы и хранимые процедуры
    #32463905
Фотография konstsch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть процедура, см. ниже
Дак вот если в предикате поставить '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
...
Рейтинг: 0 / 0
Индексы и хранимые процедуры
    #32463974
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для LIKE :param индекс не может использоваться.
Ибо сервер на знает, а может ты там в параметр понапихаешь % всяких и т.п.
Если дестаточно совпадения по начальным буквам, то используй
STARTING WITH :param
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Индексы и хранимые процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]