1、在sql中盡量少用<>和!=
下面的查詢即使在cust_rating列有乙個索引,查詢語句仍然執行一次全表掃瞄。
selectcust_id,cust_name
from
customers
where cust_rating <>'aa
';
把上面的語句改成如下的查詢語句,這樣,在採用基於規則的
優化器而不是基於代價的優化器(更智慧型)時,將會使用索引。
selectcust_id,cust_name
from
customers
where cust_rating <'aa
'or cust_rating >'aa
';
特別注意:通過把不等於操作符改成or條件,就可以使用索引,以避免全表掃瞄。
2、使用is null 或is not null時是否使用列索引
使用is null 或is not null同樣會限制索引的使用。因為null值並沒有被定義。在sql語句中使用null會有很多的麻煩。因此建議開發人員在建表時,把需要索引的列設成not null。如果被索引的列在某些行中存在null值,就不會使用這個索引(除非索引是乙個位圖索引,關於位圖索引在稍後在詳細討論)。
索引使用注意事項
1.索引不會包含有 null 值的列只要列中包含有 null 值都將不會被包含在索引中,復合索引中只要有一列含有 null 值,那麼這一列對於此復合索引就是無效的。所以我們在資料庫設計時不要讓字段的預設值為 null 應該用 0 乙個特殊的值或者乙個空串代替空值。2.復合索引 比如有一條語句是這樣的...
使用索引注意事項
新增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...
sql復合索引使用和注意事項
1 定義 單一索引 單一索引是指索引列為一列的情況,即新建索引的語句只實施在一列上 復合索引 復合索引也叫組合索引 使用者可以在多個列上建立索引,這種索引叫做復合索引 組合索引 復合索引在資料庫操作期間所需的開銷更小,可以代替多個單一索引 同時有兩個概念叫做窄索引和寬索引,窄索引是指索引列為1 2列...