、 資料型別盡量用數字型,數字型比字元型的快
2、 選擇正確的表引擎
myisam 適合於一些需要大量查詢的應用,但其對於有大量寫操作並不是很好。甚至你只是需要
update
乙個字段,整個表都會被鎖起來,而別的程序,就算是讀程序都無法操作直到讀操作完成。另外,
myisam
對於 select count(*)
這類的計算是超快無比的。
innodb 的趨勢會是乙個非常複雜的儲存引擎,對於一些小的應用,它會比
myisam
還慢。他是它支援「行鎖
」 3、 選擇合適的資料型別。性別」
,「國家」
,「民族」
,「狀態」
或「部門」
,你知道這些欄位的取值是有限而且固定的,那麼,你應該使用
enum
而不是
varchar。
4、 盡量給字段加上not null
5、 乙個表不要加太多索引,因為索引影響插入和更新的速度
6、 適當的使用冗餘的反正規化設計,以空間換時間有的時候會很高效
7、 盡量不要在資料庫中做運算
8、 使用預處理語句。例如使用pdo來操作
mysql
在效能方面,當乙個相同的查詢被使用多次的時候,這會為你帶來可觀的效能優勢。你可以給這些prepared statements(預處理語句
)定義一些引數,而mysql
只會解析一次。
9、 不要在生產環境程式中使用select * from
的形式查詢資料。只查詢需要使用的列
10、 查詢盡可能使用limit
減少返回的行數,減少資料傳輸時間和頻寬浪費
11、 所有的sql
關鍵字用大寫,避免
sql語句重複編譯造成系統資源的浪費
12、開啟慢查詢日誌,定期用explain
或desc
優化慢查詢中的
sql語句
13、最先出現的條件,一定是過濾和排除掉更多結果的條件,第二出現的次之。
14、對查詢進行優化,盡量避免全表掃瞄。首先應考慮在where
以及order by
涉及的列上建立索引。
15、盡量避免在where
子句中對字段進行
null
值判斷。這會進行全表掃瞄
select id,name from user where name is null;
16、盡量避免在where
子句中對字段進行表示式操作。這會導致引擎放棄使用索引而進行全表掃瞄
select id,name from user where age/12;
17、使用連線(join
)代替子查詢
select * from custominfo where customid in ( select customid from saleinfo )
18、對於
or子句,如果要利用索引,則
or之間的每個條件列都必須用到索引,如果沒有索引,則應該考慮增加索引。
mysql優化經驗
1.避免 select 用具體的字段代替 不要返回無用的字段 2.應該盡量避免在where字句中使用 或 操作符 3.應該盡量避免在where字句中對字段進行null判斷 select id from 表名 where num is null 判斷是否為null不能使用 可以在num上設定預設值,比...
對mysql優化關注 MySQL優化經驗
1 資料型別盡量用數字型,數字型比字元型的快 2 選擇正確的表引擎 myisam 適合於一些需要大量查詢的應用,但其對於有大量寫操作並不是很好。甚至你只是需要update乙個字段,整個表都會被鎖起來,而別的程序,就算是讀程序都無法操作直到讀操作完成。另外,myisam 對於 select count...
MySQL 效能優化 經驗
1.為查詢快取優化你的查詢 大多數的mysql伺服器都開啟了查詢快取。這是提高性最有效的方法之一,而且這是被mysql的資料庫引擎處理的。當有很多相同的查詢被執行了多次的時候,這些查詢結果會被放到乙個快取中,這樣,後續的相同的查詢就不用操作表而直接訪問快取結果了。這裡最主要的問題是,對於程式設計師來...