LINUX.ORG.RU

Firebird 2.0 Beta


0

0

На фоне последних новостей с фронтов SQL-серверов незамеченным прошел выпуск проектом Firebird первой беты 2-й версии легковесной встраиваемой реляционной базы данных (в девичестве более известной как Borland Interbase). Изменений по сравнению со стабильной веткой 1.5 слишком много чтобы перечислять их в тексте новости.
Наряду с исходным кодом доступны и бинарные сборки под разные платформы.

>>> Домашняя страница проекта

★★★

Проверено: Shaman007 ()
Ответ на: комментарий от anonymous

2anonymous (*) (21.11.2005 16:07:13)

>странные это звери - ораклоиды. странные звери - анонимусы :-) сначала 1 пишет явную чушь, а остальные потом его отмазывают.

>насколько я понимаю тот анонимус прокомментировал встраиваемость >фиребирда. гм... вобщето это был выстрел в воздух.

>если вас такие мелочи сподвигают на повторение подвига томми, это повод задуматься

нам не жалко, но только мы органически терпеть не можем глупости. anonymous (*) (21.11.2005 16:07:13)

PS. Поскольку автор уже написал что пошутил- никаких претензий не имею :-)

StarWoofy
()
Ответ на: комментарий от anonymous

> На время не смотрел

Вот смотри:

test=> show enable_seqscan;
 enable_seqscan
----------------
 on
(1 запись)

test=> EXPLAIN analyze select * from v1 where whendate > DATE '2005-11-01';
                                                               QUERY PLAN                 
--------------------------------------------------------------------------------
---------------------------------------------------------
 Subquery Scan v1  (cost=189.64..210.88 rows=1214 width=8) (actual time=56.777..88.173 rows=992 loops=1)
   ->  Unique  (cost=189.64..198.74 rows=1214 width=8) (actual time=56.759..76.129 rows=992 loops=1)
         ->  Sort  (cost=189.64..192.67 rows=1214 width=8) (actual time=56.747..63.370 rows=1214 loops=1)
               Sort Key: whendate, vv
               ->  Append  (cost=0.00..127.44 rows=1214 width=8) (actual time=0.074..46.935 rows=1214 loops=1)
                     ->  Subquery Scan "*SELECT* 1"  (cost=0.00..127.42 rows=1213 width=8) (actual time=0.064..33.614 rows=1213 loops=1)
                           ->  Seq Scan on t1  (cost=0.00..115.29 rows=1213 width=8) (actual time=0.046..19.157 rows=1213 loops=1)
                                 Filter: (whendate > '2005-11-01'::date)
                     ->  Subquery Scan "*SELECT* 2"  (cost=0.01..0.03 rows=1 width=0) (actual time=0.117..0.132 rows=1 loops=1)
                           ->  Result  (cost=0.01..0.02 rows=1 width=0) (actual time=0.081..0.086 rows=1 loops=1)
                                 One-Time Filter: (('now'::text)::date > '2005-11-01'::date)
 Total runtime: 93.818 ms
(записей: 12)

test=> set enable_seqscan to 0;
SET
test=> EXPLAIN analyze select * from v1 where whendate > DATE '2005-11-01';
                                                                    QUERY PLAN            
--------------------------------------------------------------------------------
-------------------------------------------------------------------
 Subquery Scan v1  (cost=204.33..225.58 rows=1214 width=8) (actual time=106.209..139.823 rows=992 loops=1)
   ->  Unique  (cost=204.33..213.44 rows=1214 width=8) (actual time=106.190..127.459 rows=992 loops=1)
         ->  Sort  (cost=204.33..207.37 rows=1214 width=8) (actual time=106.175..112.911 rows=1214 loops=1)
               Sort Key: whendate, vv
               ->  Append  (cost=0.00..142.14 rows=1214 width=8) (actual time=0.081..95.938 rows=1214 loops=1)
                     ->  Subquery Scan "*SELECT* 1"  (cost=0.00..142.11 rows=1213 width=8) (actual time=0.070..82.884 rows=1213 loops=1)
                           ->  Index Scan using t1_idx3 on t1  (cost=0.00..129.98 rows=1213 width=8) (actual time=0.053..65.403 rows=1213 loops=1)
                                 Index Cond: (whendate > '2005-11-01'::date)
                     ->  Subquery Scan "*SELECT* 2"  (cost=0.01..0.03 rows=1 width=0) (actual time=0.101..0.117 rows=1 loops=1)
                           ->  Result  (cost=0.01..0.02 rows=1 width=0) (actual time=0.083..0.089 rows=1 loops=1)
                                 One-Time Filter: (('now'::text)::date > '2005-11-01'::date)
 Total runtime: 146.182 ms
(записей: 12)


Как уже заметил, в данном случае использовать индекс _дороже_, поэтому умный оптимизатор сделал простой фильтр. Сравни:

Без индекса -- Total runtime: 93.818 ms
С индексом  -- Total runtime: 146.182 ms

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

Если мне не изменяет маразм, то использование индекса целесообразно если объём выборки составляет не менее 20% от общего количества записей таблицы

GlooM
()
Ответ на: комментарий от GlooM

Использование индексов целесообразно, если выборка достаточно небольшая, но строк в таблице наоборот много. В примере чуть раньше выбирается всего три строки из 24000, там индекс быстрее почти на три порядка. А в последнем примере показано наоборот: в таблице примерно 1500 записей, выбираются почти все, в результате индекс только мешает -- всё равно все (или почти) страницы прочитать надо.

baka-kun ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.