1.
索引不會包含有
null
值的列只要列中包含有
null
值都將不會被包含在索引中,復合索引中只要有一列含有
null
值,那麼這一列對於此復合索引就是無效的。所以我們在資料庫設計時不要讓字段的預設值為
null
。應該用
0、乙個特殊的值或者乙個空串代替空值。
2.復合索引
比如有一條語句是這樣的:
select * from users wherearea=』beijing』 and age=22;
如果我們是在
area
和age
上分別建立單個索引的話,由於
mysql
查詢每次只能使用乙個索引,所以雖然這樣已經相對不做索引時全表掃瞄提高了很多效率,但是如果在
area
、age
兩列上建立復合索引的話將帶來更高的效率。如果我們建立了
(area,age,salary)
的復合索引,那麼其實相當於建立了
(area,age,salary)
、(area,age)
、(area)
三個索引,這被稱為最佳左字首特性。因此我們在建立復合索引時應該將最常用作限制條件的列放在最左邊,依次遞減。
3.使用短索引
對串列進行索引,如果可能應該指定乙個字首長度。例如,如果有乙個
char(255)
的列,如果在前
10 個或
20 個字元內,多數值是惟一的,那麼就不要對整個列進行索引。短索引不僅可以提高查詢速度而且可以節省磁碟空間和
i/o操作。
4.排序的索引問題
mysql
查詢只使用乙個索引,因此如果
where
子句中已經使用了索引的話,那麼
order by
中的列是不會使用索引的。因此資料庫預設排序可以符合要求的情況下不要使用排序操作;盡量不要包含多個列的排序,如果需要最好給這些列建立復合索引。
5.like
語句操作
一般情況下不鼓勵使用
like
操作,如果非使用不可,如何使用也是乙個問題。
like「%aaa%」
不會使用索引而
like「aaa%」
可以使用索引。
6.不要在列上進行運算
select* from users where year(adddate)
7.不使用
not in
和操作not in
和操作都不會使用索引將進行全表掃瞄。
not in
可以not exists
代替,id3
則可使用
id>3 or id
使用索引注意事項
新增dept 資料 create procedure insert dept in start int 10 in max num int 10 begin declare i int default 0 set autocommit 0 repeat set i i 1 insert into d...
mysql索引 使用注意事項
索引使用缺點 雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行insert,update和delete。因為更新表時,mysql不僅要儲存資料,還要儲存一下索引檔案 建立索引會占用磁碟空間的索引檔案。一般情況這個問題不太嚴重,但如果你在要給大表上建了多種組合索引,索引檔案會膨脹很寬 ...
使用組合索引注意事項
一 索引的概念 索引 在對錶需要進行查詢或者排序操作時,可以對錶中某個或者某幾個字段新增索引,對 乙個字段新增索引就是單個索引,對多個字段新增索引時就是組合索引。create index a index on a id,custname 給表a的id custname欄位建立組合索引,組合索引對查詢...