sql語句的優化:
《一》 :盡量使用單錶查詢,不適用多表查詢(子查詢)
《二》 :使用distinct
《三》 :盡量使用較小的列
《四》 :頻繁使用的字段加索引
《五》 :避免使用select* 和 like 查詢
《六》 :資料量在百萬級以上,使用分表查詢,時時分割表
《七》 :避免在索引列上使用計算,not ,in 等操作
《八》 :當只需要一行資料的時候,使用limit
《九》 :針對查詢較慢的語句,可以使用explain來分析該語句具體的執**況
字段優化
(一):能用小的,不用大的
(二):能用定長,不用變長
索引優化
(一):表的主鍵和外來鍵,必須有索引
(二):資料量超過300的表應該有索引
(三):經常與其他表進行連線的字段上應該建立索引
(四):經常出現在where語句中的字段,特別是大表的字段,建 立索引
(五):索引應建立在選擇效能高的字段上
(六):索引應該建立在小字段上,對於大的文字字段甚至超長字段,不要建立索引
表的優化
《一》儲存引擎:myisam, innodb
區別:(1):構成上的區別:
myisam 在磁碟上儲存成三個檔案
.frm檔案 儲存表定義
資料檔案 副檔名:.myd
索引檔案 副檔名:.myi
innodb在磁碟上的資源是兩個檔案
表空間資料檔案
日誌檔案
注意:表的大小只受限於作業系統檔案的大小,一般為2gb
《二》:對鎖的支援
myisam支援表鎖,innodb 支援行鎖
《三》:事物處理方面
myisam 型別的表強調的是效能,其執行速度比innodb更快,
但是不支援事物和外來鍵
inoodb 提供事物,支援事物,外來鍵等高階的資料庫功能
《四》:對增 , 刪 , 改 , 查的操作
myisam :刪,查
innodb :insert ,update
《五》:對auto_increment的操作
myisam :按照寫入順序
innodb :主鍵自增長
SQL 語句優化 OR 語句優化案例
從上海來到溫州,看了前幾天監控的sql語句和資料變化,發現有一條語句的io次數很大,達到了150萬次io,而兩個表的資料也就不到20萬,為何有如此多的io次數,下面是執行語句 select ws.nodeid,wi.laststepid,wi.curstepid from workflowinfo ...
sql語句的優化
1 in 操作符 用in寫出來的sql的優點是比較容易寫及清晰易懂,這比較適合現代軟體開發的風格。但是用in的sql效能總是比較低的,從oracle執行的步驟來分析用in的sql與不用in的sql有以下區別 oracle試圖將其轉換成多個表的連線,如果轉換不成功則先執行in裡面的子查詢,再查詢外層的...
SQL語句的優化
通過使用者反饋獲取存在效能問題的sql 通過慢查日誌獲取存在效能問題的sql 實時獲取存在效能問題的sql mysqldumpslow pt query digest pt query digest explain h 127.0.0.1,u root,p p ssword slow mysql.l...