日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL的单表索引优化案例

發布時間:2025/3/19 数据库 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL的单表索引优化案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 創建數據表及插入數據
  • create table if not exists article(id int(10) unsigned not null primary key auto_increment,author_id int(10) unsigned not null,/*作者編號*/category_id int(10) unsigned not null,/*種類編號*/views int(10) unsigned not null,comments int(10) unsigned not null,title varchar(255) not null,content text not null ); insert into article(author_id,category_id,views,comments,title,content) values (1,1,1,1,'1','1'),(2,2,2,2,'2','2'),(1,1,3,3,'3','3');
  • 問題提出:查詢category_id為1且comments大于1的情況下,views最多的article_id
  • 問題分析:可以將category_id和comments作為where的查詢條件,根據views排序,限制顯示一條信息即可
  • SQL語句:
  • select id,author_id from article where category_id = 1 and comments > 1 order by views desc limit 1;

    查詢是可以的:
    5. 使用 explain 關鍵字進行分析:
    出現了type=ALL和Extra 含有 using filesort 情況,這是我們極其不愿意看到的全表查詢和使用文件排序,產生臨時表,key為NULL表示實際上也沒有用到索引
    5. 在創建表的時候是沒有創建索引的,接下來我們為表創建多值索引(因為我們需求用到了其中三個索引)

    create index ccv on article(category_id,comments,views);
  • 再來執行上面 explain分析語句:
  • 顯然type從All變為了 range,這是我們希望看到的,但是,從extra列看,還存在使用文件排序的情況,我們知道,使用filesort原因是索引值存在范圍情況,不唯一,如果我們把 comments > 1 改成 comments = 1,我們再來看:
    type直接從 range 級別到了 ref 級別,也不存在 filesort 了,所以給我們一個提示,存在 filesort 是因為comments這一查詢條件不唯一,接下來我們把索引改一下,去掉comments這一列試試:
  • drop index ccv on article; create index cv on article(category_id,views);
  • 在來看 explain 執行情況:
    這樣,再次查詢需求完成了,性能方面也符合了需要,這僅僅是一個索引優化的小案例,希望對大家有幫助!
  • 與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的MySQL的单表索引优化案例的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。