powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / View с использованием left join. ООоооочень долго
25 сообщений из 149, страница 1 из 6
View с использованием left join. ООоооочень долго
    #39505610
tarhitay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, ну помогите с запросом или объясните, что не так.
Есть 2 таблицы. 1-я с организациями, у которых есть почтовый индекс. (1675 записей)
2-я - БД почтовых индексов России. (46000 примерно записей)
Пишу view:

CREATE VIEW ORG_VIEW (GUID, ORG_NAME, REGION)
AS
SELECT
ORGALLINFO.GUID,
ORGALLINFO.ORGNAME,
d1.REGION
FROM ORGALLINFO
Left join PINDX12 d1 on d1.POSTALCODE=ORGALLINFO.ORGPOSTINDEX
;

После чего выполняю
SELECT COUNT(*) FROM org_view

Запрос выполняется больше 3-х минут.

Где засада?
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505612
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tarhitay,

план запроса где?
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505617
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LEFT написан сознательно, или "так вышло"?

зы: и почему.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505619
tarhitay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,

нужны все организации, в которыйх нужно обозначить регион и район
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505620
tarhitay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Ещеб знать что это такое...
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505624
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
15.08.2017 14:18, tarhitay пишет:
> нужны все организации, в которыйх нужно обозначить регион и район

а шо, у вас есть организации без региона?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505627
tarhitay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,

Нет. Но в таблице вбит полный адрес строкой.

В принципе добавил прямо в таблицу регион, район, город.
Но сам факт выполнения запроса в VIEW больше 3-х минут вызывает вопрос: почему?
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505629
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приведите DDL таблиц ORGALLINFO и PINDX12 (включая индексы).

P.S. Запрос 1675 на 46000 выполнять 3-х минут - это странно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505633
tarhitay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МимопроходящийLEFT написан сознательно, или "так вышло"?

зы: и почему.


Дошло!!! Спасибо :)
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505637
tarhitay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Убрал LEFT
Запрос обработался за 1 секунду. Но если есть организация, у которой не указан индекс - ее не будет в выборке. Правильно?
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505639
tarhitay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,


CREATE TABLE ORGALLINFO
(
GUID Char(36) NOT NULL,
ORGNAME Varchar(255),
ORGPOSTINDEX Varchar(10),
ORGADDRESSFULL Varchar(255),
ORGDIRECTOR Varchar(255),
ORGPHONES Varchar(255),
ORGFAX Varchar(255),
ORGMAIL Varchar(100),
ORGSITE Varchar(100),
ORGTYPEWORK Varchar(255),
ISDELETED Smallint NOT NULL,
REGION Varchar(100),
AUTONOM Varchar(100),
AREA Varchar(100),
CITY Varchar(100),
CITY_1 Varchar(100),
CONSTRAINT PK_ORGALLINFO PRIMARY KEY (GUID)
);
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
ON ORGALLINFO TO SYSDBA WITH GRANT OPTION;


CREATE TABLE ORGALLINFO
(
GUID Char(36) NOT NULL,
ORGNAME Varchar(255),
ORGPOSTINDEX Varchar(10),
ORGADDRESSFULL Varchar(255),
ORGDIRECTOR Varchar(255),
ORGPHONES Varchar(255),
ORGFAX Varchar(255),
ORGMAIL Varchar(100),
ORGSITE Varchar(100),
ORGTYPEWORK Varchar(255),
ISDELETED Smallint NOT NULL,
REGION Varchar(100),
AUTONOM Varchar(100),
AREA Varchar(100),
CITY Varchar(100),
CITY_1 Varchar(100),
CONSTRAINT PK_ORGALLINFO PRIMARY KEY (GUID)
);
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
ON ORGALLINFO TO SYSDBA WITH GRANT OPTION;
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505640
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
15.08.2017 14:27, tarhitay пишет:
> если есть организация, у которой не указан индекс - ее не будет в выборке. Правильно?

да.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505642
tarhitay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,

А есть какой-то выход, кроме как добавление запроса с выборкой отдельно организаций, у которых нет индекса?
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505644
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
15.08.2017 14:30, tarhitay пишет:
> А есть какой-то выход, кроме как добавление запроса с выборкой отдельно организаций, у которых нет индекса?

а как ты им присвоишь регион, если у них нет индекса?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505647
tarhitay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,

Это в принципе не обязательно.
В справочнике есть организации, у которых нет индекса, но есть телефон, адрес (без индекса)
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505650
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ужас!

Нафига одну и ту же таблицу 2 раза приводить.

Подозреваю что для поля POSTALCODE таблицы PINDX12 индекса нет
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505656
tarhitay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Не понял по поводу 2-х таблиц.
В первой таблице дабавил регион, район и т.д., потому что view выполняется очень долго. Изначально их там не было и не планировалось.

Что такое индекс?

P.S. Ну нуб я пока в БД
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505669
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tarhitay,

нужно описание таблицы PINDX12.
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505676
tarhitay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXItarhitay,

нужно описание таблицы PINDX12.
DDL?
Выше скинул
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505678
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tarhitay,

Вы странный? Где?
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505683
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tarhitay,

бессмыслица полная. условий where не видно ни во view, ни снаружи.
Раз ORGALLINFO Left join
значит из ORGALLINFO будут выбраны все записи.

Какой тогда смысл делать select count по view с джойном, если вместо этого можно выполнить просто select count(*) from orgallinfo ?

А про view... select count вынужден перебирать все записи, попадающие под where или его отсутствие. Значит, в данном случае переберет все из orgallinfo и зачем-то еще посчитает соответствующие из PINDX12.
Еще и таблицы здоровенные (по размеру записей).
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505700
tarhitay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXItarhitay,

Вы странный? Где?

Сори :)

CREATE TABLE PINDX12
(
POSTALCODE Varchar(100),
REGION Varchar(100),
AUTONOM Varchar(100),
AREA Varchar(100),
CITY Varchar(100),
CITY_1 Varchar(100)
);
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
ON PINDX12 TO SYSDBA WITH GRANT OPTION;
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505704
tarhitay,

так попробуй
Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE VIEW ORG_VIEW (GUID, ORG_NAME, REGION)
AS
SELECT
ORGALLINFO.GUID,
ORGALLINFO.ORGNAME,
(select d1.REGION from PINDX12 d1 where d1.POSTALCODE=ORGALLINFO.ORGPOSTINDEX)
FROM ORGALLINFO
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505713
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tarhitay,

ну а чего тогда удивляешься медленному времени выполнения. У тебя в PINDX12 нет первичного ключа или хотя бы индекса на POSTALCODE.

Довольно подозрительно что он у вас аж 100 симоволов
...
Рейтинг: 0 / 0
View с использованием left join. ООоооочень долго
    #39505724
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tarhitayЧто такое индекс?

P.S. Ну нуб я пока в БД

у... как всё запущено.

https://www.firebirdsql.org/file/documentation/reference_manuals/firebird-language-reference-30-rus.pdf
Ну и http://www.ibase.ru раздел статьи
...
Рейтинг: 0 / 0
25 сообщений из 149, страница 1 из 6
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / View с использованием left join. ООоооочень долго
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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