Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: 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 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
3-1078402300
Pancha
2004-03-04 15:11
2004.04.04
естьтакой запросик


1-1079637510
maxXP
2004-03-18 22:18
2004.04.04
Как определить запущена ли программа...


6-1074874506
Климов А
2004-01-23 19:15
2004.04.04
Просканить порты


1-1079465653
Destroyer
2004-03-16 22:34
2004.04.04
Поиск Edit-а на форме


4-1074867818
OlegL
2004-01-23 17:23
2004.04.04
PostMessage