powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Индексы....
11 сообщений из 11, страница 1 из 1
Индексы....
    #32415899
Scalder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имеем 3 таблицы....
в первой 3 тыс. записей
второй 10 т.
третей 25 т.
Делаю обьединение по одной записи т.е.
select * from t1,t2,t3 where t1.id = t2.id and t2.id = t3.id and id = 3
Как с помощью индексов сделать данный запрос максимально быстрым?
(разумееться у меня нет такого запроса :) просто обьеденяться они так... :) )
...
Рейтинг: 0 / 0
Индексы....
    #32415905
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Построй индексы по всем полям, которые у тебя в where участвуют. Дальше оптимизатор сделает всё за тебя...
...
Рейтинг: 0 / 0
Индексы....
    #32416140
Scalder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так совсем не заметен прирост производительности :(
Может можно как-то хитрее сделать?
Может есть как-то общий запрос?
...
Рейтинг: 0 / 0
Индексы....
    #32416208
Scalder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще говоря запрос выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select distinct t1.nazvanie,t1.id
from t1,е2,t3
where t1.id = t2.id
and t2.id = t3.id
and t1.naz_up like :naz_in
and t1.tel like :tel
and upper(t2.fam COLLATE PXW_CYRL) like :fam
and upper(t2.ima COLLATE PXW_CYRL) like :ima
and upper(t2.otch COLLATE PXW_CYRL) like :otch
and t3.date_otch between :start_date and :end_date
order by t1.NAZVANIE COLLATE PXW_CYRL

И что тут предпринять по улучшению производительности - ума не приложу... может есть какие статьи. Типа индексы в InterBase :)
...
Рейтинг: 0 / 0
Индексы....
    #32416306
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начнем с запроса:
from t1,е2,t3 заменить на
from t1 inner join t2 on (t1.id = t2.id) и т.д.

and t1.naz_up like :naz_in
and t1.tel like :tel
При Like индексы исп. только когда первые символы не %

and upper(t2.fam COLLATE PXW_CYRL) like :fam
and upper(t2.ima COLLATE PXW_CYRL) like :ima
and upper(t2.otch COLLATE PXW_CYRL) like :otch
при upper индексы не исп.

and t3.date_otch between :start_date and :end_date
индекс по t3.date_otch

t1.id t2.id t3.id - первичные ключи или ...?
индексы по всем

А статьи на лучшем сайте по Interbase

------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
Индексы....
    #32416337
Scalder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
inner join - спасибо попробую (но я где-то читал, помоему как раз на ibase.ru что лучше писать как раз ка у меня а не inner join)

% - мне нужны т.к. поиск ведёться только по части значения

На счет upper. И так понятно что индекс там не используеться. Вопрос имеет ли смысл создать для этих значений отдельные поля в которых будут уже готовые значения т.е. upper(t2.fam COLLATE PXW_CYRL) ? Получаеться не придёться делать upper всех записей (меньше нагрузка на сервак) и будут работать индексы (быстрее!)
t1 - главная таблица id - номер клиента (тут он уникален получаеться)
t2 и t3 - не уникален

на ibase.ru что-то ничего супер-пуппер по индексам не нашёл :(
Может естькакая книжка по идеологии индексов?
...
Рейтинг: 0 / 0
Индексы....
    #32416365
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
индексы на
t1.id
t1.nazvanie
//t1.naz_up
//t1.tel
t2.id
t3.id
t3.date_otch

убрать дистинкт, как лишний и мешающий
...
Рейтинг: 0 / 0
Индексы....
    #32416398
Scalder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)Добавил поля для upper
2) индексы вовсех таблицах по id
Скорость работы не увеличилась.....:(
Видать в определённый момент индексы только мешают что и ломает всё картину (про upper - не вопрос нагрузка на сервак должна быть меньше).
Вывод: Поиск веду по заготовленному значению аппер, индексы пока не парю... поглядим что будет когда база ещё увеличиться.....(или выдет fb2 которая может отключаться ненужные индексы :))
...
Рейтинг: 0 / 0
Индексы....
    #32416435
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и зачем использовать COLLATE PXW_CYRL ?

попробуй вот так :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select distinct t1.nazvanie,t1.id
from t1,е2,t3
where t1.id = t2.id
and t2.id = t3.id
and t1.naz_up like :naz_in
and t1.tel like :tel
and upper(t2.fam) like :fam
and upper(t2.ima) like :ima
and upper(t2.otch) like :otch
and t3.date_otch >= :start_date and t3.date_otch <= :end_date
order by t1.NAZVANIE


Best regards,
Dnico.
...
Рейтинг: 0 / 0
Индексы....
    #32416643
f_w_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А план что говорит?
...
Рейтинг: 0 / 0
Индексы....
    #32416772
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри в эксперте диаграммы индексированных и неиндексированных чтений. Может увидишь какая таблица индексов не использует.

Скорее всего тормозит у тебя сортировка, как тебе написали...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Индексы....
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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