国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

尋常的幾條 MySQL 優化

2024-07-24 12:32:35
字體:
來源:轉載
供稿:網友
      尋常的幾條 MySQL 優化:

       一、EXPLAIN
      做MySQL優化,我們要善用 EXPLAIN 查看SQL執行計劃。
 
       下面來個簡單的示例,標注(1,2,3,4,5)我們要重點關注的數據
 
type列,連接類型。一個好的sql語句至少要達到range級別。杜絕出現all級別
key列,使用到的索引名。如果沒有選擇索引,值是NULL。可以采取強制索引方式
key_len列,索引長度
rows列,掃描行數。該值是個預估值
extra列,詳細說明。注意常見的不太友好的值有:Using filesort, Using temporary
      二、SQL語句中IN包含的值不應過多
      MySQL對于IN做了相應的優化,即將IN中的常量全部存儲在一個數組里面,而且這個數組是排好序的。但是如果數值較多,產生的消耗也是比較大的。再例如:select id from table_name where num in(1,2,3) 對于連續的數值,能用 between 就不要用 in 了;再或者使用連接來替換。
 
      三、SELECT語句務必指明字段名稱
SELECT *增加很多不必要的消耗(cpu、io、內存、網絡帶寬);增加了使用覆蓋索引的可能性;當表結構發生改變時,前斷也需要更新。所以要求直接在select后面接上字段名。
 
四、當只需要一條數據的時候,使用limit 1
這是為了使EXPLAIN中type列達到const類型
 
五、如果排序字段沒有用到索引,就盡量少排序
六、如果限制條件中其他字段沒有索引,盡量少用or
or兩邊的字段中,如果有一個不是索引字段,而其他條件也不是索引字段,會造成該查詢不走索引的情況。很多時候使用 union all 或者是union(必要的時候)的方式來代替“or”會得到更好的效果
 
七、盡量用union all代替union
union和union all的差異主要是前者需要將結果集合并后再進行唯一性過濾操作,這就會涉及到排序,增加大量的CPU運算,加大資源消耗及延遲。當然,union all的前提條件是兩個結果集沒有重復數據。
 
八、 分段查詢
在一些用戶選擇頁面中,可能一些用戶選擇的時間范圍過大,造成查詢緩慢。主要的原因是掃描行數過多。這個時候可以通過程序,分段進行查詢,循環遍歷,將結果合并處理進行展示。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盱眙县| 五大连池市| 宣城市| 论坛| 丹江口市| 大厂| 隆林| 措勤县| 西和县| 揭阳市| 梨树县| 安陆市| 甘孜县| 莎车县| 沛县| 南投县| 康保县| 自贡市| 博白县| 辰溪县| 沂水县| 宝山区| 西宁市| 安福县| 叶城县| 开原市| 甘孜| 青铜峡市| 金乡县| 宜宾市| 襄城县| 全南县| 仁布县| 闸北区| 玛纳斯县| 井陉县| 光泽县| 贞丰县| 海原县| 西贡区| 靖宇县|