powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBExpert vs link SQL Server Management Studio
28 сообщений из 28, показаны все 2 страниц
IBExpert vs link SQL Server Management Studio
    #37514672
FB2.5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос чисто теоретический
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
выполняю через IBExpert следующий запорс, и IBExpert умирает
select * from firebird_table f_t
where (select count(f_t1.id) from firebird_table f_t1
          where f_t1.id = f_t.id) >  1 
order by f_t.id

этот же запрос, но через линк MS SQL(через ODBC, что уже есть нехорошо), 30сек., но выполняется
select * from firebird_bd...firebird_table f_t
where (select count(f_t1.id) from firebird_bd...firebird_table f_t1
          where f_t1.id = f_t.id) >  1 
order by f_t.id

железо  4 -х ядерный проц с  3 .0ГГц, 4Гб оперативной памяти
в таблице почти  150   000  тыщ строк, что мало.
Объясните если не трудно. Спасибо
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514677
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, FB2.5!
You wrote on Monday, November 07, 2011 4:37:10 PM:

FB2.5Объясните если не трудно. а фетчит ли ODBC
весь резалтсет?

--
With best regards, Мимопроходящий.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514690
FB2.5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,
в настройках odbc таких настроек не нашел, odbc с сайта firebird
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514707
FB2.5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FB2.5,
поговорю сам с собой
даже если odbc делает fetched, опустим этот момент,
почему IBExpert умирает, неужели это настолько сложный запрос для IBExpert'а, или он сложный для Firebird'а
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514723
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB2.5FB2.5,
поговорю сам с собой
даже если odbc делает fetched, опустим этот момент,
почему IBExpert умирает, неужели это настолько сложный запрос для IBExpert'а, или он сложный для Firebird'а
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514727
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB2.5это настолько сложный запрос для IBExpert'а, или он сложный для Firebird'а

Да, он сложный для Firebird.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514730
__FB2.5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скрипт в студию - проверим.
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514736
FB2.5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,

IBExpert не через odbc а напрямую, через odbc MS SQL
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514740
FB2.5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__FB2.5,

скрипт чего, вверху все напечатаНО
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514750
BanditJolly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB2.5Мимопроходящий,

IBExpert не через odbc а напрямую, через odbc MS SQLСними ту галку, которую обвел для тебя красным Мимопроходящий.
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514757
FB2.5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BanditJolly,

снята.
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514780
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB2.5вверху все напечатаНО
Нихрена там полезного не "напечатано". DDL таблицы где? Индексы какие есть?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514782
BanditJolly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB2.5,
как именно умирает эксперт?
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514794
BanditJolly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB2.5,
странно это.
Сколько времени выполняется запрос в эксперте, если убрать order by f_t.id ?
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514803
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB2.5
Код: plaintext
1.
2.
3.
select * from firebird_table f_t
where (select count(f_t1.id) from firebird_table f_t1
          where f_t1.id = f_t.id) >  1 
order by f_t.id
Агрегат во where-предикате плохо. И не только в ФБ.
Проверьте такой вариант:
Код: plaintext
1.
2.
3.
-- create index ft_idx on ft(id); commit;
select ft.*
from firebird_table ft
join (select x.id from firebird_table x group by x.id having count(*)> 1 ) ft1 on ft.id=ft1.id
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514825
FB2.5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблоид,
после применения индекса заработал,
меня сбило, то что MS SQL обработал и без дополнительных индексов.
Всем спасибо, тема закрыта.
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514830
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, FB2.5!
You wrote on Monday, November 07, 2011 5:43:50 PM:

FB2.5после применения индекса заработал,
кто?
что?
почему?
зачем?

--
With best regards, Мимопроходящий.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514838
FB2.5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,
так
Код: plaintext
1.
2.
3.
create asc index Index_шв on firebird_table (
  id
);
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514871
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
id не primary key?
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514899
BanditJolly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_k,

нет конечно, раз он подсчитывает одинаковые значения.

Таблоид,

из-за тебя автор ушел, и остался невыясненным изначальный вопрос (
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514904
FB2.5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BanditJolly,

вопрос снят
без индекса всеравно работает тяжело, около 3мин.(вариант Таблоида), но не могу не согласиться, о варианте, который предложил Таблоид с вложенным подзапросом как, то не подумал.
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514916
BanditJolly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB2.5,

я понимаю, что ты свою проблему решил,
но мне интереснее, откуда берутся 30 сек через линк.
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514930
FB2.5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BanditJolly,

если я правильно понял, то что произошло через линк, то это так
MS SQL вытащил в ОЗУ весь набор, и уже там сделал свою работу, что сократило время обработки запроса.
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514939
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BanditJollyно мне интереснее, откуда берутся 30 сек через линк.
Для этого надо чтобы аффтар показал план запроса в обеих серверах. Но что-то я подозреваю,
что он не знает как это сделать...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514976
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И почему никто не предложил EXISTS неужели он будет медленнее работать

Код: plaintext
1.
2.
3.
  select ft.*
    from firebird_table ft
    where exists(select * from firebird_table ft1 where  ft1.id=ft.id and ft1.PK<>ft.PK)
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514979
FB2.5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
( 1  row(s) affected)
StmtText
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
select * from avr_vs_request...kp_request kp
where (select count(kp1.numberreceivedrequest) from avr_vs_request...kp_request kp1
       where kp1.numberreceivedrequest = kp.numberreceivedrequest) >  1 
order by kp.numberreceivedrequest

( 1  row(s) affected)

StmtText
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  |--Sort(ORDER BY:([avr_vs_request]...[kp_request].[NUMBERRECEIVEDREQUEST] ASC))
       |--Filter(WHERE:(CASE WHEN [Expr1004] IS NULL THEN (0) ELSE [Expr1004] END>(1)))
            |--Hash Match(Right Outer Join, HASH:([avr_vs_request]...[kp_request].[NUMBERRECEIVEDREQUEST])=([avr_vs_request]...[kp_request].[NUMBERRECEIVEDREQUEST]), RESIDUAL:([avr_vs_request].[kp_request].[NUMBERRECEIVEDREQUEST] as [kp1].[NUMBERRECEIVEDRE
                 |--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(int,[Expr1011],0)))
                 |    |--Hash Match(Aggregate, HASH:([avr_vs_request]...[kp_request].[NUMBERRECEIVEDREQUEST]), RESIDUAL:([avr_vs_request].[kp_request].[NUMBERRECEIVEDREQUEST] as [kp1].[NUMBERRECEIVEDREQUEST] = [avr_vs_request].[kp_request].[NUMBERRECEIVEDR
                 |         |--Remote Scan(SOURCE:(avr_vs_request), OBJECT:(kp_request))
                 |--Remote Scan(SOURCE:(avr_vs_request), OBJECT:(kp_request))

( 7  row(s) affected)



я надеюсь поможет
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37514994
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB2.5я надеюсь поможет
Ну, собственно, как я предполагал: агрегирование потом джоин. То же самое, что и Таблоид
написал. Только MS SQL умеет hash outer join, а Firebird пока нет.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
IBExpert vs link SQL Server Management Studio
    #37515026
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mИ почему никто не предложил EXISTS неужели он будет медленнее работатьне зная точного распределения данных у таблице ТСа, невозможно предсказать.
Но вот на таком распределении, когда 10% строк - уникальные, а остальные имеют дубли (от 1 до 49) - что типично для дочерних таблиц - получается, что join немного быстрее exists'a. Вариант же, показанный ТС'ом, нервно покуривает в стороне.
Код: 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.
execute block as begin
execute statement 'drop sequence gen_ft;';
when any do begin end
end;
commit;
create sequence gen_ft;
commit;

recreate table t(id int, ii int primary key); commit;
execute block as
declare n int =  150000 ; -- общее число записей
declare m int =  50 ; -- сколько макс. дублей делать на одну запись
declare i int;
declare j int;
declare k int;
begin
  k=n;
  while (n> 0 ) do begin
    i= 1 ;
    j=iif(rand()< 0 . 25 , rand()*m,  1 ); -- j>1 ==> дубли в кол-ве от 1 до j-1.
    while (i<=j) do begin
      insert into t values( iif(:j= 1 , -:n, :n), gen_id(gen_ft, 1 ) );
      i=i+ 1 ;
    end
    n=n-j;
  end
end;
commit;
create index t_idx on t(id);
commit;
var_1. join
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select sum(ft.id)
from t ft
join (
  select x.id
  from t x
  group by x.id
  having count(*)> 1 
)ft1
on ft.id=ft1.id
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Execute time = 296ms
Avg fetch time =  296,00 ms 
Current memory = 9454304
Max memory = 14253136
Memory buffers = 1024
Reads from disk to cache = 0
Writes from cache to disk = 0
Fetches from cache = 784785

var_2. exists
Код: plaintext
1.
2.
select sum(ft.id)
from t ft
where exists(select * from t x where x.id=ft.id and x.ii<>ft.ii)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Execute time =  734ms 
Avg fetch time = 734,00 ms
Current memory = 10068960
Max memory = 14936928
Memory buffers = 1024
Reads from disk to cache = 999
Writes from cache to disk = 0
Fetches from cache = 1064768

var_3. count(*) внутри where:
Код: plaintext
1.
2.
3.
4.
select sum(id) --count(*)
from(
select * from t f_t
where (select count(f_t1.id) from t f_t1  where f_t1.id = f_t.id) >  1 
)z
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Execute time =  4s 890ms 
Avg fetch time = 0,03 ms
Current memory = 9438408
Max memory = 14253136
Memory buffers = 1024
Reads from disk to cache = 920
Writes from cache to disk = 0
Fetches from cache = 10389357

В ситуации, когда индекса на поле ID нет, запрос по var_1 практически остался на той же скорости: 396 ms (хотя там кеширование, конечно, сыграло роль). А вот запрос по var_2 (с exists) провалился в небытие. Тоже самое, ес-сно, случилось и с запросом var_3.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBExpert vs link SQL Server Management Studio
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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