17.10.2024 11:40
Если честно, никогда не заморачивался подобной задачей, поскольку на нищебродских конфигурациях оптимизация баз неблагодарное дело.
Тем не менее, кому-то может и потребоваться, а на базах, измеряющихся сотнями терабайт, как в моем случае, это лучше сделать, чтобы представлять себе рост занятого места. Проверяется просто, запишу, чтобы проще было копипастить.

Код:
explain plan for
create index i on t (r);

select * from table(dbms_xplan.display(null, null, 'BASIC +NOTE'));

PLAN_TABLE_OUTPUT                                                                                                                         
--------------------------------------------------------------
Plan hash value: 1744693673                                                                                                                 

---------------------------------------                                                                                                     
| Id  | Operation              | Name |                                                                                                     
---------------------------------------                                                                                                     
|   0 | CREATE INDEX STATEMENT |      |                                                                                                     
|   1 |  INDEX BUILD NON UNIQUE| I    |                                                                                                     
|   2 |   SORT CREATE INDEX    |      |                                                                                                     
|   3 |    TABLE ACCESS FULL   | T    |                                                                                                     
---------------------------------------                                                                                                     

Note                                                                                                                                        
-----                                                                                                                                       
   - estimated index size: 4194K bytes
24.10.2024 11:44
Размер индекса можно оценить, зная количество строк в таблице и среднюю длину строки. Предположим, у вас есть таблица с 10 миллионами строк и средняя длина строки составляет 100 байт. Индекс по первичному ключу будет содержать одну запись для каждой строки, поэтому его размер будет примерно равен размеру данных плюс небольшой дополнительный объем для служебной информации.

Приблизительный размер индекса можно рассчитать следующим образом:

1. Размер данных (в байтах) = количество строк * среднюю длину строки = 10,000,000 * 100 байт = 1,000,000,000 байт.
2. Дополнительный объем для индекса (примерно 10% от размера данных) = 1,000,000,000 байт * 0.10 = 100,000,000 байт.
3. Общий размер индекса = размер данных + дополнительный объем для индекса = 1,000,000,000 байт + 100,000,000 байт = 1,100,000,000 байт.

Этот расчет является приблизительным и может варьироваться в зависимости от конкретной реализации базы данных и используемых индексов. Для более точного расчета рекомендуется использовать инструменты мониторинга и анализа производительности базы данных.
Часовой пояс GMT +3, время: 12:14.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.