Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / длина строки / 9 сообщений из 9, страница 1 из 1
19.02.2003, 17:08
    #32108944
luxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
длина строки
Подскажите pls , как можно узнать
средную длину строки в таблице в байтах.
...
Рейтинг: 0 / 0
19.02.2003, 17:13
    #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
19.02.2003, 17:40
    #32108969
luxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
длина строки
в том-то и прикол, что analyze не то, что нельзя, запрещено использовать :)
...
Рейтинг: 0 / 0
19.02.2003, 17:48
    #32108979
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
длина строки
Ну есть функция VSIZE. Она вроде в байтах считает, у нас юникод в базе, так она правильно сказала, что vsize('Ф') равен не 1, а 2.
Код: plaintext
1.
select avg(vsize(my_field)) from my_table;
...
Рейтинг: 0 / 0
19.02.2003, 18:03
    #32108995
luxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
длина строки
Во , уже ближе.
Сам я эту функцию уже с утра верчу-кручу.:)
идея така:
-известен размер таблицы.
-узнать длину всех строк в таблице
-узнать среднюю длину строки
vsize врзвращает длину в байтах столбца....
Этим все затруднено, решение получается громоздким и некрасивым...
...
Рейтинг: 0 / 0
19.02.2003, 18:21
    #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
19.02.2003, 18:38
    #32109017
luxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
длина строки
эт хорошо.
тока что-то туплю:
что мне вернет следующий запрос:
select sum(dbms_rowid.rowid_block_number(rowid)) sum from tasks;
...
Рейтинг: 0 / 0
19.02.2003, 18:43
    #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
19.02.2003, 19:34
    #32109034
ShgGena
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
длина строки
2 Denis (o neskolkih tablicah v 1 bloke)
Net - dlya obychnih tablic
Da - dlya tablic v klastere
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / длина строки / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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