mysql 大表新增索引注意事項

2021-09-12 03:28:03 字數 932 閱讀 8067

linxu top命令:

[url]

我的表記錄8674132,表大小大約2g;

新增主索引

alter table user add primary key (id) ;

新增普通索引

alter table user add index (name ) ;

新增索引的時候要缺確保記憶體足夠,以我的來看,記憶體需要3g,磁碟需要4g,這只是保守估計

有時候新增索引的時候mysql會處理睡眠狀態,得不到足夠的cpu時間片

我們可以調整mysql程序的有限級

renice -20 15134

-20為nice值,15134為pid,程序的優先順序pr我們是無法調整的可以通過nice來改變

pr(new) = pr(old) + nice

以下是新增普通索引記憶體的使用情況

[img]

開始有2.8g左右

[img]

處於穩定是還有800m

以下為磁碟使用情況:

[img]

開始有18g

[img]

處於穩定中還有14g

測試:未建索引前:

select * from user where name like '西岸村大槎%'

耗時17.683s

建完索引後:

耗時0.010s

select * from user where name like '%西岸村大槎%'

耗時20.128s

從上可以得知:[color=red][size=medium]以%開頭的字串匹配不適用索引;另外對於varchar建索引,null字串能用到索引,所以一般不會影響效率和效能,相反的,在oracle上的索引,裡不包含null值,所以如果你查 null的資料,就會用不到索引,會受到影響 。

[/size][/color]

mysql索引注意事項

在查詢條件中必須有復合索引還中最左側的列 在建立多列索引時,要根據業務需求,where子句中使用最頻繁的一列放在最左邊 假設你在表的state city和zip資料列上建立了復合索引。索引中的資料行按照state city zip次序排列,因此它們也會自動地按照state city和state次序排...

mysql索引注意事項

1.模糊查詢前導不會走索引 select id,user name,price code from user activity info where user name like zhang 如果非要使用前導索引的話可以借助apache的lucence索引工具 2.欄位預設值不要設定成null 如果...

大表建立索引的注意事項

一 注意事項 首先,應當考慮表空間和磁碟空間是否足夠。我們知道索引也是一種資料,在建立索引的時候勢必也會占用大量表空間。因此在對一大表建立索引的時候首先應當考慮的是空間容量問題。其次,在對建立索引的時候要對錶進行加鎖,因此應當注意操作在業務空閒的時候進行。二 效能調整方面 首當其衝的考慮因素便是磁碟...