程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> movelob會不會影響其他索引狀態?

movelob會不會影響其他索引狀態?

編輯:MySQL綜合教程

movelob會不會影響其他索引狀態?


前幾天在客戶現場做升級,腳本中move lob字段了,客戶繼續執行操作的時候,喊索引失效了。經查看,是非lob字段的索引失效,當時沒注意,直接rebuild了,半夜回去的路上,經理問我,move lob字段,為什麼其他索引會失效?我當時。。。夜深人靜時,最佳思考時。思考的結果就是:我發現很多東西我都知道,但究其根本,就有點模糊了。比如:索引,我知道是根據rowid快速找到一行,但是,索引存儲的是一列的值(單列索引),會不會存儲與其他列的關系呢?。。。。

後來決定通過實驗驗證,不知道所以然,至少得知道依然呀。怎麼著,先知道一個再說先。

--建測試表,含主鍵
create table dxmy_lob(id number primary key,name blob,sex varchar2(10),location varchar2(100));
select * from dba_lobs d where d.table_name = 'DXMY_LOB';

--插入數據
INSERT INTO DXMY_LOB VALUES(2,to_blob('110111011'),'MAN','SOMEWARE');
COMMIT;

select * from dxmy_lob;

--創建普通索引
create index ind_dxmy on dxmy_lob(sex);

--move前查看索引狀態
select d.owner,d.index_name,d.index_type,d.status,d.last_analyzed from dba_indexes d where d.table_name = 'DXMY_LOB';

OWNER	INDEX_NAME	INDEX_TYPE	STATUS	LAST_ANALYZED
LM	IND_DXMY	NORMAL	VALID	2015/12/17 4:29:51
LM	SYS_C0011400	NORMAL	VALID	
LM	SYS_IL0000087754C00002$$	LOB	VALID	

--move走起
alter table lm_lob move lob(name) store as LM_LOB_SEG (tablespace users);

--move之後索引狀態
select d.owner,d.index_name,d.index_type,d.status,d.last_analyzed from dba_indexes d where d.table_name = 'DXMY_LOB';

OWNER	INDEX_NAME	INDEX_TYPE	STATUS	LAST_ANALYZED
LM	IND_DXMY	NORMAL	VALID	2015/12/17 4:29:51
LM	SYS_C0011400	NORMAL	VALID	
LM	SYS_IL0000087754C00002$$	LOB	VALID	

正常呀,莫非。。。
\

 

哎,我靈機一動,以為是復合索引,結果不能建。。

那最大的可能就是客戶做了什麼操作,是索引失效了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved