powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / длина строки
9 сообщений из 9, страница 1 из 1
длина строки
    #32108944
luxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите pls , как можно узнать
средную длину строки в таблице в байтах.
...
Рейтинг: 0 / 0
длина строки
    #32108949
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
analyze table my_table compute statistics;
select column_name, avg_col_len from cols where table_name = 'MY_TABLE';
...
Рейтинг: 0 / 0
длина строки
    #32108969
luxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в том-то и прикол, что analyze не то, что нельзя, запрещено использовать :)
...
Рейтинг: 0 / 0
длина строки
    #32108979
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну есть функция VSIZE. Она вроде в байтах считает, у нас юникод в базе, так она правильно сказала, что vsize('Ф') равен не 1, а 2.
Код: plaintext
1.
select avg(vsize(my_field)) from my_table;
...
Рейтинг: 0 / 0
длина строки
    #32108995
luxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во , уже ближе.
Сам я эту функцию уже с утра верчу-кручу.:)
идея така:
-известен размер таблицы.
-узнать длину всех строк в таблице
-узнать среднюю длину строки
vsize врзвращает длину в байтах столбца....
Этим все затруднено, решение получается громоздким и некрасивым...
...
Рейтинг: 0 / 0
длина строки
    #32109010
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что ты конкретно хочешь? Вон, сам только сегодня узнал, есть такой пакет sys.dbms_rowid:

Код: plaintext
1.
2.
3.
4.
select e.*
     , dbms_rowid.rowid_block_number(rowid) rbn
from scott.emp e
/


Последнее поле -это вроде как количество блоков записи. Умножаешь на размер блока в байтах- получаешь размер записи в байтах. Глянь, может пригодится.
...
Рейтинг: 0 / 0
длина строки
    #32109017
luxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эт хорошо.
тока что-то туплю:
что мне вернет следующий запрос:
select sum(dbms_rowid.rowid_block_number(rowid)) sum from tasks;
...
Рейтинг: 0 / 0
длина строки
    #32109020
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наврал я похоже. rowid_block_number возвращает номер блока, где запись лежит. Это подходит для определения общего размера таблицы:
Код: plaintext
1.
select count(distinct(dbms_rowid.rowid_block_number(rowid)))*  81192  from scott.emp;


81192 -размер блока. 2All: а в одном блоке могут быть записи из нескольких таблиц?
...
Рейтинг: 0 / 0
длина строки
    #32109034
ShgGena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Denis (o neskolkih tablicah v 1 bloke)
Net - dlya obychnih tablic
Da - dlya tablic v klastere
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / длина строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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