powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли ускорить выполнение запроса?
25 сообщений из 33, страница 1 из 2
Можно ли ускорить выполнение запроса?
    #32670801
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем! Есть БД:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
SET NAMES NONE;

CREATE GENERATOR  SEQAMA;

CREATE TABLE AMA (
    NID             INTEGER NOT NULL,
    NFILEID         INTEGER,
    SSOURCE         VARCHAR( 1 ),
    SPAY            VARCHAR( 1 ),
    STEL_A          VARCHAR( 20 ),
    DBEGDATE        DATE,
    NDURATION       INTEGER,
    STEL_B          VARCHAR( 20 ),
    STYPE           VARCHAR( 1 ),
    SCAT_A          VARCHAR( 2 ),
    SINTRANC        VARCHAR( 6 ),
    NINCHANNEL      INTEGER,
    SOUTTRANC       VARCHAR( 6 ),
    NOUTCHANNEL     INTEGER,
    NOSSMINUTES     INTEGER,
    STYPEOSS        VARCHAR( 2 ),
    SOPERATOROSS    VARCHAR( 4 ),
    SMAPOSS         VARCHAR( 6 ),
    STYPETRAFFIC_A  VARCHAR( 1 ),
    STYPETRAFFIC_B  VARCHAR( 1 ),
    SMOBILEFLAG     VARCHAR( 1 ),
    SEDITFLAG       VARCHAR( 1 )
);

ALTER TABLE AMA ADD PRIMARY KEY (NID);


CREATE INDEX DBEGDATEX ON AMA (DBEGDATE);
CREATE INDEX TEL_AX ON AMA (STEL_A);
CREATE INDEX TEL_BX ON AMA (STEL_B);

SET TERM ^ ;

 /* Trigger: INSERT_AMA */ 
CREATE TRIGGER INSERT_AMA FOR AMA
ACTIVE BEFORE INSERT POSITION  0 
as
begin
   new.nid = gen_id( seqAMA, 1  );
end
^

SET TERM ; ^
Сервер: FireBird 1.5
Текс запроса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SELECT first :nexts skip :ends * FROM ama 
 WHERE  (DBEGDATE between "29.08.2004 00:00:00" and "29.08.2004 23:59:59")
AND (NINCHANNEL between :chin11 and :chin12)
AND (NOUTCHANNEL between :chout11 and :chout12)
AND (SINTRANC=:sint)
AND (SOUTTRANC=:sout)
AND (
 (STEL_A Like "47392%") OR
 (STEL_A Like "47393%") OR
 (STEL_A Like "47394%") OR
 (STEL_A Like "47395%"))
AND (
 (STEL_B Like "32903%") OR
 (STEL_B Like "32904%") OR
 (STEL_B Like "32905%") OR
 (STEL_B Like "32906%"))
and (STYPETRAFFIC_A=:typetr1)
and (STYPETRAFFIC_B=:typetr2)
AND (NDURATION Like :duration11)
 ORDER BY DBEGDATE
Первые две строки и последняя - присутствуют всегда, остальные - в зависимости от пользователя.
Проблема в том, что БД за пару месяцев становиться 1-2 Гб. Размер вроде и не очень большой, но тормоза выполнения запроса: большые:-(

Вопрос:
можно ли как-то ускорить выполнение запроса?

Пробовал на каждый месяц хранить отдельную БД, т. е, заполнять с нуля , а старые данные хранитрь где-нить в другом месте, но это не есть очень хорошо...
С уважением, Ihor
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670837
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подойдет любое ускорение, хоть на доли секунд,
к примеру: заменить где-то Like на =, и т .д.
С уважением, Ihor
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670856
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
план в студию
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670866
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторплан в студию
Ага ... ждемс !

Best regards,
Dnico
.
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670868
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
srf2000план в студию
Прошу прощение: что это значит?
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670871
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
План выполнения твоего запроса ...

Best regards,
Dnico
.
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670885
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Like замени на starting with. Ну и план выполнения запроса покажи.
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670888
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если правильно понял:

Прога (написана на Дельфях) пробегает по форме, и в зависимости, где юзер поставил/не поставил галочку, это у словие включается/не включается в запрос.
БД хранится локально.
Но соль в том, что есть другая прога, написана не мною, она использует БД сетевую.
Данные той прогой за месяц! выполняютмся порой быстрее, чем моей за день :-(
Цель: как можнео больше ускорить работу своей программы.
К сожалению, с разработчиком другой проги пообщаться нет пока возможности.

С уважением, Ihor
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670898
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по всему, что такое IbExpert ты не знаешь. Скачай, открой им базу, выполни запрос, увидишь там план его выполнения. Скопируй его и брось сюда.
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670917
Фотография AndriyKo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IhorБД хранится локально.
Но соль в том, что есть другая прога, написана не мною, она использует БД сетевую.

Уточни или поясни :
1) "другая прога" пользует твою же БД ?
2) Объем получаемой выборки ?
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670921
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛентяйСудя по всему, что такое IbExpert ты не знаешь. Скачай, открой им базу, выполни запрос, увидишь там план его выполнения. Скопируй его и брось сюда.

Мне стыдно...
Оно?
Plan
PLAN (AMA ORDER DBEGDATEX)

Adapted Plan
PLAN (AMA ORDER DBEGDATEX)

------ Performance info ------
Prepare time = 0ms
Execute time = 43s 273ms
Current memory = 927 616
Max memory = 957 968
Memory buffers = 2 048
Reads from disk to cache = 24 768
Writes from cache to disk = 6
Fetches from cache = 474 515


Indexed Reads 157 502
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670928
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndriyKo
Уточни или поясни :
1) "другая прога" пользует твою же БД ?
2) Объем получаемой выборки ?

Другая программа работает с другой БД
От объема выборки не зависит: результат и там, и тма может быть около 500 строк, а скорость выполнения все равно отличается
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670948
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторPLAN (AMA ORDER DBEGDATEX)

Она как ... ну тогда все ясно ! Попробуй

Best regards,
Dnico
.
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670952
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dnico авторPLAN (AMA ORDER DBEGDATEX)

Она как ... ну тогда все ясно ! Попробуй

Best regards,
Dnico
.

А что пробовать?

С уважением, Ihor
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670957
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IhorОно?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Plan
PLAN (AMA ORDER DBEGDATEX)

Adapted Plan
PLAN (AMA ORDER DBEGDATEX)

 ------ Performance info ------ 
Prepare time = 0ms
Execute time = 43s 273ms
Current memory =  927   616 
Max memory =  957   968 
Memory buffers =  2   048 
Reads from disk to cache =  24   768 
Writes from cache to disk =  6 
Fetches from cache =  474   515 


И еще покажи план этого же запроса без ORDER BY. Иначе индексы для отбора не видны.
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670963
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясное дело - будет

Код: plaintext
PLAN (AMA INDEX (DBEGDATEX,TEL_BX,TEL_BX,TEL_BX,TEL_BX,TEL_AX,TEL_AX,TEL_AX,TEL_AX))

Best regards,
Dnico
.
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670964
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr
...
И еще покажи план этого же запроса без ORDER BY. Иначе индексы для отбора не видны.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Plan
PLAN (AMA INDEX (DBEGDATEX))

Adapted Plan
PLAN (AMA INDEX (DBEGDATEX))

 ------ Performance info ------ 
Prepare time = 40ms
Execute time = 17s 776ms
Current memory =  946   868 
Max memory =  982   288 
Memory buffers =  2   048 
Reads from disk to cache =  24   739 
Writes from cache to disk =  6 
Fetches from cache =  317   011 

С уважением, Ihor
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670970
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно индекс еще один добавть по полям из WHERE, но с
Код: plaintext
ORDER BY DBEGDATE
он не подхватывается ...


Best regards,
Dnico
.
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670981
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DnicoМожно индекс еще один добавть по полям из WHERE, но с
Код: plaintext
ORDER BY DBEGDATE
он не подхватывается ...

Best regards,
Dnico
.
ORDER BY (причем, оно можен быть по любому полю) убрать нет возможности, т. к. необходимо определенные результаты отсортировывать.
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670982
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотел уточноить !!!

Код: plaintext
PLAN (AMA INDEX (DBEGDATEX,TEL_BX,TEL_BX,TEL_BX,TEL_BX,TEL_AX,TEL_AX,TEL_AX,TEL_AX))

Для запроса с starting with вместо like

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SELECT first  1  skip  10  * FROM ama
 WHERE  (DBEGDATE between '29.08.2004' and '29.08.2004')
AND (NINCHANNEL between :chin11 and :chin12)
AND (NOUTCHANNEL between :chout11 and :chout12)
AND (SINTRANC=:sint)
AND (SOUTTRANC=:sout)
and (STYPETRAFFIC_A=:typetr1)
and (STYPETRAFFIC_B=:typetr2)
AND (NDURATION Like :duration11)
AND (
 (STEL_A starting with '47392') OR
 (STEL_A starting with '47393') OR
 (STEL_A starting with '47394') OR
 (STEL_A starting with '47395'))
AND (
 (STEL_B starting with '32903') OR
 (STEL_B starting with '32904') OR
 (STEL_B starting with '32905') OR
 (STEL_B starting with '32906'))

Best regards,
Dnico
.
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670989
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DnicoХотел уточноить !!!

Код: plaintext
PLAN (AMA INDEX (DBEGDATEX,TEL_BX,TEL_BX,TEL_BX,TEL_BX,TEL_AX,TEL_AX,TEL_AX,TEL_AX))
Для запроса с starting with вместо like ...
Best regards,
Dnico
.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Plan
PLAN (AMA INDEX (DBEGDATEX,TEL_BX,TEL_BX,TEL_BX,TEL_BX,TEL_AX,TEL_AX,TEL_AX,TEL_AX))

Adapted Plan
PLAN (AMA INDEX (DBEGDATEX,TEL_BX,TEL_BX,TEL_BX,TEL_BX,TEL_AX,TEL_AX,TEL_AX,TEL_AX))

 ------ Performance info ------ 
Prepare time = 70ms
Execute time = 5s 718ms
Current memory =  953   392 
Max memory =  982   288 
Memory buffers =  2   048 
Reads from disk to cache =  1   842 
Writes from cache to disk =  6 
Fetches from cache =  2   047 
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670994
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DnicoМожно индекс еще один добавть по полям из WHERE, но с
Код: plaintext
ORDER BY DBEGDATE
он не подхватывается ...

Все там подхватывается, просто не показывается в плане ;-)
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32670998
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВсе там подхватывается, просто не показывается в плане ;-)
Ну так иногда смущает ...

Best regards,
Dnico
.
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32671012
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IhorВопрос: можно ли как-то ускорить выполнение запроса?

Создать индексы для NINCHANNEL, NOUTCHANNEL, SINTRANC, SOUTTRANC, STYPETRAFFIC_A, STYPETRAFFIC_B, NDURATION?
...
Рейтинг: 0 / 0
Можно ли ускорить выполнение запроса?
    #32671022
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr
Код: plaintext
CREATE INDEX AMA_IDX1 ON AMA (DBEGDATE, SINTRANC, SOUTTRANC, NINCHANNEL, NOUTCHANNEL, STYPETRAFFIC_A, STYPETRAFFIC_B);

Код: plaintext
PLAN (AMA INDEX (DBEGDATEX,TEL_BX,TEL_BX,TEL_BX,TEL_BX,TEL_AX,TEL_AX,TEL_AX,TEL_AX))
Как такое можно понимать ?

Best regards,
Dnico
.
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли ускорить выполнение запроса?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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