SQL IS NOT NULL條件走索引 試驗

2022-02-10 21:20:42 字數 2383 閱讀 2167

create index ind on t(col1 ,0)

likgui 說的方案可以。

下面是我的實驗過程。

建兩個表,test表在cnt列上做了乙個null的索引,testx表則cnt列上沒有定義索引。

當同是執行 「where cnt is not null」條件時,test走了索引,而textx走的是全表掃瞄。

select * from testx where cnt is not null

select * from test where cnt is not null

【建表】

-- create table

create table test

(id  number,

cnt number,

c1  varchar2(10),

c2  varchar2(10));

-- create/recreate indexes

create index idx_test on test (cnt, 0)

;-- create table

create table testx

(id  number,

cnt number,

c1  varchar2(10),

c2  varchar2(10));

【表中資料】

sql> select * from testx;

id        cnt c1         c2

---------- ---------- ---------- ----------

1          3 aa         aaa

2            bb         bbb

3          4 bb         bbb

4            bb         bbb

5            bb         bbb

6          5 bb         bbb

7            bb         bbb

8          6 bb         bbb

9          7 bb         bbb

9 rows selected

sql>

sql> select * from test;

id        cnt c1         c2

---------- ---------- ---------- ----------

1          3 aa         aaa

2            bb         bbb

3          4 bb         bbb

4            bb         bbb

5            bb         bbb

6          5 bb         bbb

7            bb         bbb

8          6 bb         bbb

9          7 bb         bbb

9 rows selected

sql>

【執行計畫 testx表】

select * from testx where cnt is not null

select statement, goal = all_rows                        cost=3        cardinality=5        bytes=200

table access full        object owner=scott        object name=testx        cost=3        cardinality=5        bytes=200

【執行計畫 test表】

select * from test where cnt is not null

select statement, goal = all_rows                        cost=2        cardinality=5        bytes=200

table access by index rowid        object owner=scott        object name=test        cost=2        cardinality=5        bytes=200

index full scan        object owner=scott        object name=idx_test        cost=1        cardinality=1

where 條件為空時不走where條件

mysql 若想當where 條件為空時不走where條件,where可以整個為空,但裡面的如where is status sta tus 的 status 的 status 的status不能為空,不然會查詢出status為空的資料,記錄一下。where sta demandstatus if ...

走迷宮演算法

從起點問題的提出 在遊戲地圖中,如何尋找一條從起點到終點的最短行路線路?資料表達 使用m n大小的byte陣列 來表示地圖,每個位置的狀態用0表示可走,1表示牆,2表示起點,3表示終點,128表示路徑 行走規則有兩種 4方向行走規則 只能從當前點向上,下,左,右 這4個方向行走 8方向行走規則 可以...

走樓梯問題

宣告 題目來自 自己先做一遍。27.跳台階問題 題目 乙個台階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有多少總跳法,並分析演算法的時間複雜度。這道題最近經常出現,包括microstrategy等比較重視演算法的公司都 曾先後選用過個這道題作為面試題或者筆試題。思路 一開始我想到的方法就是...