国产探花免费观看_亚洲丰满少妇自慰呻吟_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:只檢索給定范圍的行,使用一個索引來選擇行。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 虎林市| 宾川县| 依兰县| 韩城市| 达尔| 科技| 六盘水市| 德江县| 凤台县| 马山县| 武功县| 元朗区| 山西省| 崇阳县| 绵阳市| 开阳县| 丹凤县| 贵州省| 阿拉善盟| 金塔县| 新化县| 江源县| 尚义县| 佛山市| 金川县| 望都县| 芦溪县| 邵阳市| 商洛市| 南涧| 斗六市| 濉溪县| 三江| 仁怀市| 双鸭山市| 吴桥县| 青浦区| 阳朔县| 开阳县| 枝江市| 贺州市|