powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / select count(*) ... - тормозит
11 сообщений из 11, страница 1 из 1
select count(*) ... - тормозит
    #32183723
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть сервер под линуксом с Firebird-ом
В базе есть view
Если по этому VIEW сделать запрос типа:
SELECT COUNT(*) FROM view_name
скрипт (на PHP) надолго задумывается и так и не выводит результат.
Пробовал через interbase-овский клиент - результат такой же - клиент просто подвисает так и не выдав результат.

Есть идеи, куда копать ?

Запросы к другим таблицам выполняются. Подозреваю что это может быть связано с VIEW.


PS
я с firebird-ом только недавно работаю поэтому не знаю какую еще информацию нужно пердоставить. Скажите я постараюсь выяснить.
Или скажите что в доках почитать.
Диалект - 3.
...
Рейтинг: 0 / 0
select count(*) ... - тормозит
    #32183736
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если дать запрос

SELECT * FROM view_name

тормоз есть?
Да и еще, тормозит всегда или только в некоторых случаях? тоесть бывают моменты когда все Ок?
...
Рейтинг: 0 / 0
select count(*) ... - тормозит
    #32183873
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В базе 300 000 записей :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create view V1(ID,QTY) as select ID, QTY from DELIVERY;

select count(*) from v1;

Query Time
 ------------------------------------------------
 
Prepare       :  0 , 00  ms
Execute       :  2   828 , 00  ms
Avg fetch time:  2   828 , 00  ms


Ты бы написал как у тебя View написан, может тогда что-то можно будет подсказать.
...
Рейтинг: 0 / 0
select count(*) ... - тормозит
    #32184581
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так наверное проблема связана с диалектами.
Только что попробовал выполнить запрос
SELECT FIRST 20 * FROM MAXTABLE  
в первом и третьем диалектах.
В третьем - зависает, в первом выдается ошибка :
Data type unknown Client SQL dialect 1 does not support reference to DATE datatype
В VIEW есть поле типа DATE, поэтому я и пытаюсь использовать 3-ий диалект.

View делал не я.
Насколько я могу судить сделано оно так:
Есть несколько десятков таблиц с одинаковыми полями
DB1
DB1_eng
DB1_ger
...
(только не надо мне рассказывать что структура неверная, сам знаю, но как мне объяснили в ином случае какие-то проблемы с репликацией в Paradox. Вообщем я в подробности не лез)
View делался примрно так:
SELECT список полей FROM DB1
UNION
SELECT список полей FROM DB1_eng
...
...
Рейтинг: 0 / 0
select count(*) ... - тормозит
    #32184620
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
небольшое уточнение:
В запросе
SELECT FIRST 20 * FROM MAXTABLE
MAXTABLE - это и есть VIEW
...
Рейтинг: 0 / 0
select count(*) ... - тормозит
    #32184634
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А примерно сколько записей в этих таблицах и сколько всего таблиц?

В принципе многое зависит и от кол-ва UNION и условий выборки.

Думаю надо смотреть что за план PLAN используется. Может индексы добавить ...
...
Рейтинг: 0 / 0
select count(*) ... - тормозит
    #32184720
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
таблиц - 47
записей - почти 50 000 (во view), соответственно в таблицах от 0 до 6000 записей
Про plan - я пока не знаю что это, щас доки почитаю, если разберусь - напишу.
...
Рейтинг: 0 / 0
select count(*) ... - тормозит
    #32184872
Fighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй выполнить твой запрос (SELECT * FROM view_name) в IBExpert.
Тока дождись результата, это может занять даже несколько часов.
Потом глянь анализ производительности. Очень может быть, что количество чтений из таблиц ооооочень большое, так бывает если "кривой" план запроса.

У меня однажды запрос с выполнялся около часа, окозалось что чтений из одной таблицы было более 1 000 000! После оптимизации запроса, чтений стало максимум 4 000 и при этом запрос выполнялся менее секунды!!!
...
Рейтинг: 0 / 0
select count(*) ... - тормозит
    #32184950
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот тут подумал ... если 47 таблиц да еще UNION - тормоз 100%. Может все это решить написанием Хранимой процедуры. Там можно поизощряться ...
...
Рейтинг: 0 / 0
select count(*) ... - тормозит
    #32186032
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мужики, спасибо всем кто откликнулся.

Это view делали для меня (мне лень было с этими 47 таблицами работать, хотел с одной). Если view тормозит, прийдется с этой кучей таблиц работать :(

2 Fighter
спасибо за совет, буду хоть знать как отлаживать SQL под Ibase, но с моим DialUp-ом и тем количеством данных выполнение запроса ждать прийдется очень долго.
...
Рейтинг: 0 / 0
select count(*) ... - тормозит
    #32186193
Fighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отлаживаться нужно локально, а то и рабочую базу можно испортить!!!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / select count(*) ... - тормозит
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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