drop index scott.idx_uni_emp;
create index scott.idx_emp_1 on scott.employee (employee_id);
--select
*from
scott.employee
where
employee_id = 100;
select
*from
table (
dbms_xplan.display_cursor (null, null, 'advanced')
);--
truncate table scott.employee;
begin
for i in 1 .. 5000 loop
insert into scott.employee
values
('f', i) ;
end loop ;
commit ;
end ;
/begin
for i in 5001 .. 10000 loop
insert into scott.employee
values
('m', i) ;
end loop ;
commit ;
end ;/--
select
gender,
count (*)
from
scott.employee
group by
gender;
exec dbms_stats .gather_table_stats(ownname=>'scott',tabname=>'employee',estimate_percent=>100,cascade=>true,method_opt=>'for all columns size 1',no_invalidate=>false);
set autot trace
--select
employee_id
from
scott.employee;
--強制也不走
select
/*+ index(employee idx_emp_1) */
employee_id
from
scott.employee;
為什麼?
索引idx_emp_1是個單鍵值b樹索引,因此null值不會儲存其中,但是一旦employee_id有了null(儘管此實驗沒有null),此索引會跳過null,導致執行結果不對,執行計畫就有可能不會走,因此選擇走全表掃瞄
處理辦法:alter table scott.employee modify (employee_id not null);
mysql,explain執行計畫組合索引測試
create table users id int 11 not null,name varchar 255 default null,age int 11 default null,manager id int 11 default null,primary key id key idex nam...
MySQL索引和執行計畫
索引 index 是幫助mysql高效獲取資料的資料結構。可以得到索引的本質 索引是資料結構 右側是資料表,一共有兩列七條記錄,最左邊的是資料記錄的實體地址 show index from table namecreate unique index indexname on mytable colu...
Mysql 索引和執行計畫
平衡二叉樹示意圖。聚簇索引 輔助索引 單列索引 聯合索引 i ndex a,b,c 查詢條件一定要帶a才能走索引 最左列 字首索引 由於索引列,字元太長,占用空間太大,索引樹高度增高。查詢時需要檢索更多的索引也。mysql中建議3,4層。所以可以選擇大字段的前部分作索引。2.資料庫行過多 1.索引欄...