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

首頁 > 數據庫 > MySQL > 正文

MySql中sql如何優化

2024-07-24 12:34:05
字體:
來源:轉載
供稿:網友
  這篇文章主要介紹了MySql中sql怎么優化,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
 
  一、explain返回列簡介
  1、type常用關鍵字
  system > const > eq_ref > ref > range > index > all。
 
  system:表僅有一行,基本用不到;
  const:表最多一行數據配合,主鍵查詢時觸發較多;
  eq_ref:對于每個來自于前面的表的行組合,從該表中讀取一行。這可能是最好的聯接類型,除了const類型;
  ref:對于每個來自于前面的表的行組合,所有有匹配索引值的行將從這張表中讀取;
  range:只檢索給定范圍的行,使用一個索引來選擇行。當使用=、<>、>、>=、<、<=、IS NULL、<=>、BETWEEN或者IN操作符,用常量比較關鍵字列時,可以使用range;
  index:該聯接類型與ALL相同,除了只有索引樹被掃描。這通常比ALL快,因為索引文件通常比數據文件小;
  all:全表掃描;
  實際sql優化中,最后達到ref或range級別。
 
  2、Extra常用關鍵字
  Using index:只從索引樹中獲取信息,而不需要回表查詢;
 
  Using where:WHERE子句用于限制哪一個行匹配下一個表或發送到客戶。除非你專門從表中索取或檢查所有行,如果Extra值不為Using where并且表聯接類型為ALL或index,查詢可能會有一些錯誤。需要回表查詢。
 
  Using temporary:mysql常建一個臨時表來容納結果,典型情況如查詢包含可以按不同情況列出列的GROUP BY和ORDER BY子句時;
 
  索引原理及explain用法請參照前一篇:MySQL索引原理,explain詳解
 
  二、 單表sql優化
  1、刪除student表中的聯合索引。
 
  2、添加索引
  alter table student add index student_union_index(name,age,sex);
 
  優化一點,但效果不是很好,因為type是index類型,extra中依然存在using where。
 
  3、更改索引順序
  因為sql的編寫過程
 
  select distinct ... from ... join ... on ... where ... group by ... having ... order by ... limit ...
  解析過程
 
  from ... on ... join ... where ... group by ... having ... select distinct ... order by ... limit ...
  因此我懷疑是聯合索引建的順序問題,導致觸發索引的效果不好。are you sure?試一下就知道了。
 
  alter table student add index student_union_index2(age,sex,name);
  刪除舊的不用的索引:
 
  drop index student_union_index on student
  索引改名
 
  ALTER TABLE student RENAME INDEX student_union_index2 TO student_union_index
  更改索引順序之后,發現type級別發生了變化,由index變為了range。
 
  range:只檢索給定范圍的行,使用一個索引來選擇行。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 喀喇| 如东县| 平凉市| 象州县| 陈巴尔虎旗| 荔波县| 安阳县| 称多县| 柞水县| 辽中县| 清水县| 汤阴县| 罗城| 辰溪县| 广饶县| 靖江市| 麦盖提县| 义乌市| 凤山市| 高碑店市| 湖南省| 宽甸| 西城区| 马公市| 平乡县| 昌宁县| 弥勒县| 乃东县| 禹州市| 汶上县| 德格县| 玉田县| 兴宁市| 米泉市| 石泉县| 玉树县| 新蔡县| 霍林郭勒市| 叙永县| 呼和浩特市| 招远市|