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

歡迎訪問 生活随笔!

生活随笔

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

数据库

改了一行代码,MySQL查询效率提升了80%,老板奖了我50万

發布時間:2023/12/10 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 改了一行代码,MySQL查询效率提升了80%,老板奖了我50万 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??前言

????????優化MySQL數據庫是數據庫管理員必備的技能,通過不同的優化方式方法來達到提高MySQL數據庫性能的目的。

??????? MySQL數據庫當用戶和數據量非常少的情況下,我們就很難判斷MySQL數據庫性能的好壞。只有當用戶量與數據量大起來,MySQL的性能如何才能體現。查詢是數據庫最頻繁的操作,提高查詢速度可以有效地提高MySQL數據庫的性能。


優化查詢

?SHOW STATUS 語句查詢MySQL數據庫性能?

?分析查詢語句?

?索引對查詢速度的影響?

?LIKE 優化索引查詢?

?使用多列索引?

?使用關鍵字or?


?SHOW STATUS 語句查詢MySQL數據庫性能?

我們可以使用 SHOW STATUS 語句查詢MySQL數據庫性能。

語法格式:

SHOW STATUS LIKE 'VALUE'

VALUE參數有如下幾種

  • Connection:連接MySQL服務器的次數。
  • Uptime:MySQL服務器的上線時間。
  • Slow_queries:慢查詢次數。
  • Com_select:查詢操作的次數。
  • Com_insert:插入操作的次數。
  • Com_delete:刪除操作的次數。

  • 通過這些參數我們可以分析MySQL數據庫性能。然后根據分析結果,進行 相應的性能優化。



    ?分析查詢語句?

    可以使用EXPLAIN語句和DESCRIBE語句來分析查詢語句。

    語法格式:

    #EXPLAIN 語法格式 EXPLAIN SELECT 語句;#DESCRIBE 語法格式 DESCRIBE SELECT 語句;

    ?接下來分別對EXPLAINDESCRIBE進行介紹

    使用EXPLAIN語句分析查詢語句

    ?其中各字段所代表的意義:

    id:指出在整個查詢中select的位置。

    table:存放所查詢的表名。

    type:連接類型,該列中存儲很多值,范圍從const到All。

    possible_keys:指出為了提高查找速度,在MySQL中可以使用的索引。

    key:指出實際使用的鍵。

    rows:指出MySQL需要在相應表中返回查詢結果所檢驗的行數,為了得到該總行數,MySQL必須掃描處理整個查詢,再乘以每個表的行值。

    Extra:包含一些其他信息,設計MySQL如何處理查詢。


    使用DESCRIBE語句分析查詢語句

    ?DESCRIBE語句的使用方法與EXPLAIN語法是相同的,這兩者的分析結果也大體相同。


    ?索引對查詢速度的影響?

    我們在查詢的過程中使用索引,可以提高數據庫查詢效率,減少查詢次數。接下來我們通過例子來對比一下使用索引和不使用索引對于查詢速度的差異。


    我們通過查詢student表來分析使用索引和不使用索引的情況。

    ?


    未使用索引的查詢情況

    explain select * from student where stuname = 'zhangsan';

    ?分析:在未使用索引的情況下,我們發現原來表中的三條數據都被查詢了一遍。這時會有人說,才三條數據有什么影響?當然,數據量很少的情況下,查詢效率不會有太大差別。如果數據庫中數據量龐大的時候,比如上千萬條,那我們在查詢的時候這上千萬條數據都會被檢索一遍,用戶為了查詢一條數據而遍歷上千萬條數據,將會消耗大量時間資源。


    使用索引的查詢情況

    我們先給stuname字段加上索引

    CREATE INDEX index_stuname ON student(stuname);

    ?加上索引后我們在查詢

    explain select * from student where stuname = 'zhangsan';

    ?分析:從上述結果可以看到,由于創建的索引使訪問的行數由3減少到1,所以,在查詢操作中,使用索引不但會優化查詢效率,還會降低服務器的開銷。


    ?LIKE 優化索引查詢?

    當第一個字符為“%”時,索引不會被使用,如果“%”所在匹配字符串中位置不是第一位置,則索引會被正常使用。

    explain select * from student where stuname like 'zh%';

    ?


    ?使用多列索引?

    多列索引在表的多個字段上創建一個索引,只有查詢條件中使用了這些字段中的一個字段時,索引才會被正常使用。

    創建多列索引

    CREATE INDEX index_student ON student(stuname,stuage);

    注意:我們在查詢的時候如果應用stuage字段,索引不能被正常使用,必須使用第一字段stuname時,索引才正常生效。這點一定要記住!



    ?使用關鍵字or?

    ???????在MySQL中,查詢語句只有包含關鍵字or時,要求查詢的兩個字段必須同為索引,如果所搜索的條件中,有一個字段不為索引,則在查詢中不會應用索引進行查詢,索引不會生效,查詢效率不會提升。


    這篇文章如果對小伙伴們有幫助的話,希望點個贊支持一下~????? 十分感謝~


    總結

    以上是生活随笔為你收集整理的改了一行代码,MySQL查询效率提升了80%,老板奖了我50万的全部內容,希望文章能夠幫你解決所遇到的問題。

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