Вниз
Скачать: CL | DM;

Оптимизация БД   Найти похожие ветки 

← →
Алексей Петухов   (2004-03-02 07:16) [0]

Здравствуйте уважаемые мастера.
Сразу извините за длинный вопрос.
Используется БД 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-02 08:35) [1]

запрос на выборку одной записи и так должен летать, только надо выбирать эту запись и "прикручивать"  к ней справочники, а не нооборот:

from
 "nak_zag.dbf" z
 LEFT JOIN "type_nak.dbf" t on z.type_nak_id=t.id


← →
Алексей Петухов   (2004-03-02 09:22) [2]

То есть, извините, вот так?

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


И такой подход действительно ускорит обработку запроса?


← →
Johnmen ©   (2004-03-02 09:28) [3]

FROM ...
LEFT JOIN ...
LEFT JOIN ...


В данном конкретном случае не ускорит.


← →
Desdechado ©   (2004-03-02 09:39) [4]

индексы по полям, по кот. происходит объединение, должны ускорить
СУБД на 2 таблицы можно любую


← →
Алексей Петухов   (2004-03-02 09:51) [5]

Да нет.
Таблиц у меня 13 штук.
В одном запросе используется максимум до 6 таблиц.
Но ведь индексы замедлят и всавку записей.
А вообще как в данном случае индексы создать? Create Index?


← →
Карелин Артем ©   (2004-03-02 09:57) [6]

DataBase DeskTop


← →
ЮЮ ©   (2004-03-03 03:00) [7]

>Но ведь индексы замедлят и всавку записей.

Ну уж первичный ключ по ID просто необходим


← →
Алексей Петухов   (2004-03-03 06:32) [8]


> Ну уж первичный ключ по ID просто необходим

А что это он таким необходимым стал?
Я, например, без него как-то обхожусь

> DataBase DeskTop

Спасибо за совет, конечно, но я таблички прграмно создаю, да и если таблицы переиндексировать понадобиться, мне пользователя ДБ Десктопоу обучать?


← →
Anatoly Podgoretsky ©   (2004-01-23 13:20) [9]

Необязателен, но без него жить сложно, особенно в Парадоксе.


← →
ЮЮ ©   (2004-03-04 05:24) [10]

>Я, например, без него как-то обхожусь

Вот так и обходишься, что поиск одной записи по ID, который у всех выполняется слёту, у тебя уже вызывакт проблемы :-)

CREATE TABLE "tmp1.dbf" (
 ID integer,
 Name char(10)),
 PRIMARY KEY(ID)
)


← →
Карелин Артем ©   (2004-03-04 11:16) [11]

Тогда смотри IndexDefs и CreateIndex



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.021 c
1-1079073808
Berezne
2004-03-12 09:43
2004.04.04
Как сделать мигающтй текст


1-1079078065
AleKo
2004-03-12 10:54
2004.04.04
Как назначить процедуру обработки события.


3-1078272937
Алексей
2004-03-03 03:15
2004.04.04
SQL запрос из трех баз


8-1069512904
Юрий Ж.
2003-11-22 17:55
2004.04.04
Спецификация *.avi файла?


3-1078924228
Anarki
2004-03-10 16:10
2004.04.04
Проблема с запросом в ADOQuery




   Наверх