![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Оптимизация БД
Алексей Петухов © (2004-03-02 07:16:00)Здравствуйте уважаемые мастера.
Сразу извините за длинный вопрос.
Используется БД PARADOX.
Состоит из нескольких таблиц.
Локально, TDataBase.Exclusive:=true;
1. Вопрос в том, как усорить обработку SQL запросов?
2. Какую БД лучше использовать в данном случае?
3. Поможет ли создание индексов и будет ли BDE эти индексы использовать?
4. Может перейти на INTERBASE?
Заранее благодарю за помощь.
В общем виде таблицы такие:
1.CREATE TABLE "tmp.dbf"
( ID integer,
type_nak_id integer,
mag_id integer,
data date,
pos_id integer,
oplata numeric(10,2),
sum_zak numeric(10,2),
sum_real numeric(10,2))
2.CREATE TABLE "tmp1.dbf"
( ID integer,
Name char(10))
Использую для работы TQuery запросы примерно такие:
select
t.id t_id, t.name t_name,
z.id, z.type_nak_id, z.data z_data, z.pos_id, z.oplata z_oplata, z.sum_zak z_sum_zak, z.sum_real z_sum_real,
p.id p_id, p.name p_name,
t.rank t_rank,
z.mag_id z_mag_id,
upper(p.name) up_p_name
from
"type_nak.dbf" t
right join
"nak_zag.dbf" z
on
z.type_nak_id=t.id
left join
"pos.dbf" p
on
p.id=z.pos_id
where z.mag_id=:mag_id
order by
up_p_name, z_data, t_rank
Карелин Артем (2004-03-04 11:16:00) [1]Тогда смотри IndexDefs и CreateIndex
ЮЮ (2004-03-04 05:24:00) [2]>Я, например, без него как-то обхожусь
Вот так и обходишься, что поиск одной записи по ID, который у всех выполняется слёту, у тебя уже вызывакт проблемы :-)
CREATE TABLE "tmp1.dbf" (
ID integer,
Name char(10)),
PRIMARY KEY(ID)
)
Алексей Петухов (2004-03-03 06:32:00) [3]
> Ну уж первичный ключ по ID просто необходим
А что это он таким необходимым стал?
Я, например, без него как-то обхожусь
> DataBase DeskTop
Спасибо за совет, конечно, но я таблички прграмно создаю, да и если таблицы переиндексировать понадобиться, мне пользователя ДБ Десктопоу обучать?
ЮЮ (2004-03-03 03:00:00) [4]>Но ведь индексы замедлят и всавку записей.
Ну уж первичный ключ по ID просто необходим
Карелин Артем (2004-03-02 09:57:00) [5]DataBase DeskTop
Алексей Петухов (2004-03-02 09:51:00) [6]Да нет.
Таблиц у меня 13 штук.
В одном запросе используется максимум до 6 таблиц.
Но ведь индексы замедлят и всавку записей.
А вообще как в данном случае индексы создать?Create Index?
Desdechado (2004-03-02 09:39:00) [7]индексы по полям, по кот. происходит объединение, должны ускорить
СУБД на 2 таблицы можно любую
Johnmen (2004-03-02 09:28:00) [8]
FROM ...
LEFT JOIN ...
LEFT JOIN ...
В данном конкретном случае не ускорит.
Алексей Петухов (2004-03-02 09:22:00) [9]То есть, извините, вот так?
from
"nak_zag.dbf" z
left join
"type_nak.dbf" t,
"pos.dbf" p
on
z.type_nak_id=t.id
z.pos_id=p.id
И такой подход действительно ускорит обработку запроса?
ЮЮ (2004-03-02 08:35:00) [10]запрос на выборку одной записи и так должен летать, только надо выбирать эту запись и "прикручивать" к ней справочники, а не нооборот:
from
"nak_zag.dbf" z
LEFT JOIN "type_nak.dbf" t on z.type_nak_id=t.id
Anatoly Podgoretsky (2004-01-23 13:20:00) [11]Необязателен, но без него жить сложно, особенно в Парадоксе.