資料庫效能優化的一些總結(1)

shiyihai發表於2007-05-14

1、適當時水平分割和垂直分割表;

[@more@]

1、適當時水平分割和垂直分割表;
水平分割是按照行將一個表分割為多個表,這可以提高每個表的查詢速度,但查詢、更新時要選擇不同的表,統計時要彙總多個表,因此應用程式會更復雜。

垂直分割是對於一個列很多的表,若某些列的訪問頻率遠遠高於其它列,就可以將主鍵和這些列作為一個表,將主鍵和其它列作為另外一個表。通過減少列的寬度,增加了每個資料頁的行數,一次I/O就可以掃描更多的行,從而提高了訪問每一個表的速度。但是由於造成了多表連線,所以應該在同時查詢或更新不同分割表中的列的情況比較少的情況下使用。

2、保留冗餘列
當兩個或多個表在查詢中經常需要連線時,可以在其中一個表上增加若干冗餘的列,以避免表之間的連線過於頻繁。由於對冗餘列的更新操作必須對多個表同步進行,所以一般在冗餘列的資料不經常變動的情況下使用。

3、增加派生列
派生列是由表中的其它多個列計算所得,增加派生列可以減少統計運算,在資料彙總時可以大大縮短運算時間。

4、任何在where子句中使用is null或is not null的語句優化器是不允許使用索引的。

5、帶萬用字元(%)的like語句
where device_name like '%NOKIA%';不會利用上索引,但where device_name like 'NOKIA%';會利用上索引。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/38542/viewspace-914939/,如需轉載,請註明出處,否則將追究法律責任。

相關文章