在oracle裡面,oralce是不會把null放到普通索引裡的.
create
table
person(id
number(38
)not
null
primary
key,
first_name
varchar2(50
)not
null,
last_name
varchar2(50
)not
null,
date_of_birth
date
null);
create
index
i_person_dob
onperson
(date_of_birth);
上述雖然建立了索引,但是在執行查詢單獨使用到該列時,就不會起到作用,例如:
select
1from
dual
where
date
'1980-01
-01'notin(
select
date_of_birth
from
person
);執行計畫如下:|id
|operation
|name|
------------------------------------- |
0|select
statement|
||*1|
filter|
||2|
fast
dual|
||*3|
table
access
full
|person|
-------------------------------------
查詢進行了乙個table access full操作,索引被忽略了。
最佳的解決方案,其實就是把這列設定成not null就好了:
alter
table
person
modify
date_of_birth
date
notnull
;
(也可以通過使用not exists來代替not in)
另外,以下查詢語句可以列出所有存在乙個null值的索引列。
select i
.table_name,
i.index_name,
listagg(
lpad(i
.column_position,2
)||':
'||rpad(i
.column_name,30
)||' '||
decode(t
.nullable
,'y','
(null)'
,'(not
null)'
),','
)within
group
(orderbyi
.column_position)
as"nullable columns in indexes"
from
user_ind_columnsi
join
user_tab_colst
on(t.
table_name,t
.column_name)=
((i.table_name,i
.column_name))
where
exists(
select
1from
user_tab_cols
twhere(t
.table_name,t
.column_name,t
.nullable)=
((i.table_name,i
.column_name
,'y'))
)groupbyi
.table_name,i
.index_name
orderbyi
.index_name
asc;
有時候成本並不是6秒
我想現在很多人都有了網路購物的經歷了,再也不像幾年前那麼擔驚受怕,那麼神秘而又深不可測,只敢窺探卻不敢越雷池半步。那一年第一次小試是在2006年,上購置一本雜誌,歷時乙個多月才完成一次驚險的交易。因為對電子商務的不信任,我們那時候甚至不敢在網路 輕信任何人和事,後來 的交易方式讓大家來通過 中介完成...
早安心語 微笑有時候說明你很堅強
1 她說,幸福就是找到了乙個令她想為他拼命 的人,而那人卻總是拍拍她的頭說,再吃一點,別餓著了。2 靜靜的走,默默的看,無論風雨,無論坎坷。3 不要等我流淚,你才明白我的悲傷。不要等我消失,你才知道我的存在。4 乙個人能有多大出息,關鍵看他怎樣對待自己的時間,你和時間的關係,就形成了你自己。你讓時間...
python有時候import不了當前的包
問題描述 importerror no module named x 但是,有些時候python直譯器可能腦抽。明明上述操作都有,但是就是找不到。importerror no module named x importerror no module named x importerror no mo...