對mysql優化關注 MySQL優化經驗

2021-10-20 01:21:43 字數 1273 閱讀 8714

1、資料型別盡量用數字型,數字型比字元型的快

2、 選擇正確的表引擎

myisam 適合於一些需要大量查詢的應用,但其對於有大量寫操作並不是很好。甚至你只是需要update乙個字段,整個表都會被鎖起來,而別的程序,就算是讀程序都無法操作直到讀操作完成。另外,myisam 對於 select count(*) 這類的計算是超快無比的。

innodb 的趨勢會是乙個非常複雜的儲存引擎,對於一些小的應用,它會比 myisam 還慢。他是它支援「行鎖」 ,於是在寫操作比較多的時候,會更優秀。並且,他還支援更多的高階應用,比如:事務。

3、 選擇合適的資料型別。

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之間的每個條件列都必須用到索引,如果沒有索引,則應該考慮增加索引。

php技術交流qq群:422137578

mysql的優化 MySQL優化

一 sql語句優化 1 使用limit對查詢結果的記錄進行限定 2 避免select 將需要查詢的字段列出來 3 使用連線 join 來代替子查詢 4 拆分大的delete或insert語句 二 選擇合適的資料型別 1 使用可存下資料的最小的資料型別,整型 date,time char,varcha...

mysql 隨機優化 mysql 優化

mysql優化包括兩方面,一方面是sql優化,另一方面是資料庫配置優化 一 sql優化 1.優化資料型別 盡量將字段設定為 not null,如果你要儲存null,手動去設定它,而不是把它設為預設值 盡量可能的使用更小的字段,但也不要太過執著減小資料型別,要為以後的程式拓展預留一定的空間 盡量少用v...

mysql效能優化 mysql效能優化

優化方式 1.空間換時間 冗餘 2.時間換空間 字段優先使用型別 int date char varchar text 索引型別 btree索引 hash索引 索引的葉子下,存放乙個資訊指向所在行的資料位址。btree有利於範圍查詢,hash有利於精確查詢。btree用的更多一些。btree索引的常...