---使用索引優化資料庫查詢效率
1.不宜建立索引的情形(1
)經常插入,修改和刪除的表(2
)資料量比較小的表,因為查詢優化器在搜尋索引時所花費的時間可能會大於遍歷全表的資料所需要的時間
2.適合建立索引的情形(1
)為where子句**現的列建立索引(2
)建立組合索引(3
)為group
by子句**現的列建立索引
3.聚集索引的設計原則(1
)該列的數值是唯一的或者很少有重複的記錄(2
)經常使用between ...
and..按順序查詢的列(3
)定義identity的唯一列.(4
)經常用於對資料進行排序的列.
---無法使用索引的select語句
1.對索引列使用了函式,如:
select
*from
tb where
max(id)
=100
2.對索引列使用了
'%xx
',如:
select
*from
tb where
id like'%1
'需要注意的不是所有使用like關鍵字的select 語句都無法使用索引,比如
select
*from
tb where
id like'1%
'就可以使用索引
3.在where子句中對列進行型別轉換(其實也是使用到了函式)
4.在組合索引的第1列不是使用最多的列,如在下面3個查詢語句中建立組合索引,按順序包含col2,col1,id列;
select
*from
tb whereid=
'1'and
col1='
aa'select
id,sum
(col1)
from
tb group
byid
select
*from
tb whereid=
'2'and
col2='
bb'則第一句和第二句無法使用到索引 所以需要注意組合索引的順序
5.在where 子句中使用in關鍵字的某些句子
當在in關鍵字後面使用巢狀的select語句,將無法使用在該列上定義的索引
如:select
*from
ta where
id in
(select
id from
tb where
....)
--這樣可以用到索引
select
*from
tb where
id in('
1','
2'/fredrickhu
/archive
/2010/01
/12/5183068
.aspx
資料庫優化查詢效率
1 儲存引擎選擇 如果資料表需要事務處理,應該考慮使用 innodb,因為它完全符合 acid 特性。如果不需要事務處理,使用預設儲存引擎 myisam 是比較明智的 2 分表分庫,主從。3 對查詢進行優化,要盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索 引 4...
資料庫索引 優化查詢
新增索引的幾種方法 1.新增primary key 主鍵索引 alter tabletable nameadd primary key column table name 表名 column 字段 將table name表的column欄位設定為主鍵 2.新增unique 唯一索引 alter ta...
資料庫索引 索引優化
二 三星索引 三 合適設計理想索引 謂詞簡單謂詞和複雜謂詞 where字句中的每個條件稱為乙個謂詞。過濾因子 描述了謂詞的選擇性,即表中滿足謂詞條件的記錄行數所佔的比例 過濾因子 ff 結果集的數量 錶行的數量 平均過濾因子 1 不同列值的數量 索引片及匹配列 乙個索引定義乙個索引片,如果where...