powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / С точностью до какого знака в дробной части ФБ пишет в rdb$statistics ?
7 сообщений из 7, страница 1 из 1
С точностью до какого знака в дробной части ФБ пишет в rdb$statistics ?
    #38983158
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

Заполняю таблицу уникальными ИДшниками, от 0 до 299 (т.е. всего их 300):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
recreate table test(id int);
commit;
insert into test(id)
with recursive r as(select 0 i from rdb$database union all select r.i+1 from r where r.i<17)
select r1.i*18 + r0.i
from r r1, r r0
 rows 300 ;
commit;

create index test_id on test(id);
commit;
set list on;

select rdb$statistics
from rdb$indices
where rdb$index_name = upper('test_id');

select 1.000000000000000000/nullif(count(distinct(id)), 0)
from test;

На виндузе (32-разрядная сборка) это выдаст (что в 2.5.5, что в 3.0):

Код: plaintext
1.
RDB$STATISTICS                  0.003333333414047957
DIVIDE                          0.003333333333333333

На linux-64 первое число будет 0.00333333341404795 6 .
В любом случае, враньё начинается с 10-го знака после десятичной точки.

Это так и должно быть ?
...
Рейтинг: 0 / 0
С точностью до какого знака в дробной части ФБ пишет в rdb$statistics ?
    #38983179
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты на тип поля RDB$STATISTICS смотрел? У тебя все еще есть вопросы про 10-й знак после запятой?
...
Рейтинг: 0 / 0
С точностью до какого знака в дробной части ФБ пишет в rdb$statistics ?
    #38983354
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrты на тип поля RDB$STATISTICS смотрел? У тебя все еще есть вопросы про 10-й знак после запятой?Оно имеет тип = double precision. Вопрос про точность остаётся: каким образом в значение статистики пишется хз что, когда должно было вробе бы записаться вот это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SQL> recreate table test(idx_stat double precision);
SQL> commit;
SQL> insert into test select 1.000000000000000000/300 from rdb$database returning idx_stat;

               IDX_STAT
=======================
   0.003333333333333333

ЗЫ. Не, я помню, конечно, что в диалекте-1 поля, объявленные как numeric(N, d), где d > 9, будут храниться как double precision, а не в виде фиксированной точки. Но больше что-то никаких идей насчёт этой "магии числа 10".
...
Рейтинг: 0 / 0
С точностью до какого знака в дробной части ФБ пишет в rdb$statistics ?
    #38983388
DelphiCoder_1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шо-то мне подсказывает, что дело в isql, а именно в том, как он отображает такие числа.
...
Рейтинг: 0 / 0
С точностью до какого знака в дробной части ФБ пишет в rdb$statistics ?
    #38983409
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насколько помню, внутрях оно считается как FLOAT
...
Рейтинг: 0 / 0
С точностью до какого знака в дробной части ФБ пишет в rdb$statistics ?
    #38983418
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrвнутрях оно считается как FLOATА ведь так и есть :-)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL> select cast(1.000000000000000/300 as float) from rdb$database;

          CAST
==============
  0.0033333334

SQL> select cast(cast(1.000000000000000/300 as float) as double precision) from rdb$database;

                   CAST
=======================
   0.0033333334 14047957 

Зачем так было сделано ? И может ли этот мусор после 10-го знака сыграть злую рояль при построении оптимизатором плана для запроса с большими таблицами ?
...
Рейтинг: 0 / 0
С точностью до какого знака в дробной части ФБ пишет в rdb$statistics ?
    #38983422
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЗачем так было сделано ? И может ли этот мусор после 10-го знака сыграть злую рояль при построении оптимизатором плана для запроса с большими таблицами ?
ХЗ зачем, скорее всего просто забили болт на точность. Насчет планов - не думаю, что это может сыграть плохую роль при современных размерах баз.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / С точностью до какого знака в дробной части ФБ пишет в rdb$statistics ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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