powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Индексы
6 сообщений из 6, страница 1 из 1
Индексы
    #39405534
Приветсвую!

есть таблица:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
set SERVEROUTPUT ON 
declare
  is_exists pls_integer;
begin


select count(*) 
into is_exists
from all_tables where table_name = 'TEST__CODE_DATA';
if is_exists != 0 then
  execute immediate 'drop table TEST__CODE_DATA';

  execute immediate 'create table TEST__CODE_DATA(
    ID integer, -- PK
    CODE varchar(7),
    INDICATOR varchar(5)
  )';  
  
  execute immediate 'create index IDX_TEST__VALUE_CODE on TEST__CODE_DATA (CODE)';
  execute immediate 'create index IDX_TEST__VALUE_INDICATOR on TEST__CODE_DATA (INDICATOR)';
end if; 

-- на самом деле строк 4 с лишним миллиона
insert into TEST__CODE_DATA (ID, CODE, INDICATOR) VALUES (1, '023874', 'J');
insert into TEST__CODE_DATA (ID, CODE, INDICATOR) VALUES (2, '234444', NULL);
insert into TEST__CODE_DATA (ID, CODE, INDICATOR) VALUES (3, '332443', NULL);
insert into TEST__CODE_DATA (ID, CODE, INDICATOR) VALUES (4, '234342', 'N');
insert into TEST__CODE_DATA (ID, CODE, INDICATOR) VALUES (5, '234233', 'N');
insert into TEST__CODE_DATA (ID, CODE, INDICATOR) VALUES (6, '234444', NULL);
insert into TEST__CODE_DATA (ID, CODE, INDICATOR) VALUES (7, '200044', NULL);
insert into TEST__CODE_DATA (ID, CODE, INDICATOR) VALUES (8, '298774', NULL);
insert into TEST__CODE_DATA (ID, CODE, INDICATOR) VALUES (9, '298333', 'J');
insert into TEST__CODE_DATA (ID, CODE, INDICATOR) VALUES (10, '334443', 'J');
commit;


end;
/




у нас есть запрос


Код: plsql
1.
2.
select * from TEST__CODE_DATA
where INDICATOR = 'J';



Вопрос, действительно ли индекс IDX_TEST__VALUE_INDICATOR на текстовое поле INDICATOR, которое содержит всего три значения NULL, J и N - больше вереден чем полезен? B точный поиск будет работать медленее, с индексом чем без? Но почему?
...
Рейтинг: 0 / 0
Индексы
    #39405548
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Сызранов
Код: plsql
1.
2.
3.
4.
if is_exists != 0 then
  execute immediate 'drop table TEST__CODE_DATA';

  execute immediate 'create table TEST__CODE_DATA(

Быдлокод.
Андрей Сызрановдействительно ли индекс IDX_TEST__VALUE_INDICATOR на текстовое поле INDICATOR, которое содержит всего три значения NULL, J и N - больше вереден чем полезен?Зависит от соотношения их количеств.
...
Рейтинг: 0 / 0
Индексы
    #39405556
Elic,

примерно 4,5 строк, предположим, соотношение 50% NULL, 50% J или N
...
Рейтинг: 0 / 0
Индексы
    #39405560
veep_in_office
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicАндрей Сызранов
Код: plsql
1.
2.
3.
4.
if is_exists != 0 then
  execute immediate 'drop table TEST__CODE_DATA';

  execute immediate 'create table TEST__CODE_DATA(

Быдлокод.
Андрей Сызрановдействительно ли индекс IDX_TEST__VALUE_INDICATOR на текстовое поле INDICATOR, которое содержит всего три значения NULL, J и N - больше вереден чем полезен?Зависит от соотношения их количеств.

Индекс будет эффективен только лишь в том случае если выборка возвращает не более 3-4% от всей таблицы, в ином случае оптимизатор скорее всего перейдет на фулскан.

В вашем случае значение "J" занимает треть таблицы - индекс тут работать однозначно не будет.
...
Рейтинг: 0 / 0
Индексы
    #39405569
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Сызранов50% J или N
Код: plaintext
"Вероятность встретить динозавра на улице - 50%. Либо встречу, либо нет" (с) 
...
Рейтинг: 0 / 0
Индексы
    #39405634
veep_in_office
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей СызрановElic,

примерно 4,5 строк, предположим, соотношение 50% NULL, 50% J или N

На мелких таблицах индекс вообще работать не будет при любом соотношении.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Индексы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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