|
|
|
Forum Guru
      
участник
Last Login: 24.04.2002 10:25
Сообщ.: 72,
Visits: 793
|
|
(По ORACLE)Сильно ли зависит производительность и размер от разных числовых полей в таблице? Смысл такой: Скоро придется проектировать базу и хотел бы определиться имеет ли смысл при проектировании таблиц тратить время на дополнительную аналитику, чтобы понимать какого типа сделать поле(integer, float, longint, ...) или все поля сделать одним NUMBER. Интересно будет ли разница в размере или производительности. Поделитесь реальными наблюдениями, опытом...
|
|
|
|
|
Forum Member
      
участник
Last Login: 28.06.2002 21:38
Сообщ.: 47,
Visits: 518
|
|
Сам не проверял, но могу прцетировать очень умную книжку "Oracle Проектирование баз данных". В ней сказано, что в Oracle реально существуют только два типа данных: Number и Float. Integer - это Number(38) Smallint - это Number(38) Real - это Float(63) Рекомендуется всегда ограничивать разрядность целых чисел Number(nn) и чисел с плавающей точко Float(nn). Во многих случаях с помощью этого приема можно сэкономить до 75% дискового пространства и, следовательно, на 75% уменьшить число обращений к блокам при полном сканировании таблицы.
|
|
|
|
|
Forum Member
      
участник
Last Login: 21.02.2002 14:29
Сообщ.: 29,
Visits: 320
|
|
| По-моему не сильно зависит. Самое главное мудро индексы построить и про дерективы оптимизации не забывать. Советую для вычисления стоимости запроса использовать программу SQL Navigator(есть версии для оракла и др. баз). Еще есть специальная программа, которая в красиваостях показыват что просиходит с БД
|
|
|
|
|
Forum Guru
      
участник
Last Login: 24.04.2002 10:25
Сообщ.: 72,
Visits: 793
|
|
Провел тесты (насоздавал табличек с разными полями и навставлял строчек до полу-миллиона и потестировал запрсами). Результат: Производительность колеблется на одном уровне (в пределах 10% колеблются результаты для всех таблиц) Размер как ни странно таблица с сплошными NUMBER(без параметров) занимает немного меньше чем со сплошными INTEGER Смысла извращаться и в одной таблице комбинировать различные поля не вижу.
|
|
|
|
|
Forum Guru
      
участник
Last Login: 17.04.2003 15:55
Сообщ.: 69,
Visits: 760
|
|
| На самом деле в Oracle ВСЕ числовые поля имеют тип NUMBER. Разница в 10% на оракле не значит совершенно ничего, он постоянно кеширует данные, поэтому вначале запрос может выполняться раза в 3 дольше обычного, от числового типа ничего не зависит. Проектировать поля нужно в зависимости от нужд. Например, денежные поля для хранения рублей имеет смысл делать NUMBER(12,2). Вообще лучше определить домены по смыслу (правда на сервере домены не поддерживаются, зато в Oracle Designer 6i запросто). А проектирование сведется к нормализации/денормализации данных.
|
|
|
|
|
Forum Member
      
участник
Last Login: 28.06.2002 21:38
Сообщ.: 47,
Visits: 518
|
|
| INTEGER - это тот же NUMBER. Проследить выигрыш можно только при полном сканировании таблицы. Ясно, что более короткое число будет считываться быстрее в столько раз, во сколько короче. При поиске по индексу существенной разницы в скорости поиска не будет. Будет только зря расходываться дисковое пространство.
|
|
|
|
|
Forum Member
      
участник
Last Login: 28.06.2002 21:38
Сообщ.: 47,
Visits: 518
|
|
| INTEGER - это тот же NUMBER. Проследить выигрыш можно только при полном сканировании таблицы. Ясно, что более короткое число будет считываться быстрее в столько раз, во сколько короче. При поиске по индексу существенной разницы в скорости поиска не будет. Будет только зря расходываться дисковое пространство.
|
|
|
|