亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

我的mysql數據庫sql優化原則

系統 2247 0

原文? 我的mysql數據庫sql優化原則

一、前提

  這里的原則 只是針對mysql數據庫,其他的數據庫 某些是殊途同歸,某些還是存在差異。我總結的也是mysql普遍的規則,對于某些特殊情況得特殊對待。在構造sql語句的時候養成良好的習慣

二、原則總結

  原則1、僅列出需要查詢的字段,這對速度不會明顯的影響,主要是考慮節省應用程序服務器的內存。

    原來語句: select * from admin

    優化為: select admin_id,admin_name,admin_password from admin

  原則2、盡量避免在列上做運算,這樣導致索引失效

    原語句: select * from admin where year(admin_time)>2014

    優化為: select * from admin where admin_time> '2014-01-01'

?  原則3、使用JOIN 時候,應該用小的結果驅動大的結果(left join 左邊表結果盡量小 如果有條件應該放到左邊先處理,right join 同理反向),同事盡量把牽涉到多表聯合的查詢拆分多個query(多個連表查詢效率低,容易到之后鎖表和阻塞)

    原來語句 select * from admin left join log?on admin.admin_id = log.admin_id where log.admin_id>10

    優化為: select * from (select * from admin where admin_id>10) T1 left join log on T1.admin_id = log.admin_id

  原則 4、注意LIKE 模糊查詢的使用, 避免使用 %% ,可以使用 后面帶% ,雙%是不走索引的

    原來語句: select * from admin where admin_name like '%de%'

    優化為: select * from admin where admin_name >='de' and admin_nam <'df' (注意不是等效的這里試試提供優化的思路)

  原則5、使用批量插入節省交互 (當如如果使用存儲過程來處理批量的sql 各種邏輯是更好的選擇)

    原來語句:insert into admin(admin_name,admin_password) values ('test1','pass1');

        insert into admin(admin_name,admin_password) values ('test2','pass2');

        insert into admin(admin_name,admin_password) values ('test3','pass3')

    優化為: insert into admin(admin_name,admin_password) values('test1','pass1'),('test2','pass2'),('test3','pass3')

  原則6、limit 的基數比較大時使用between

    原來語句:select * from admin order by admin_id limit 100000,10

    優化為:? select * from admin where admin_id between 100000 admin 100010 order by admin_id

  原則7、不要使用rand函數獲取多條隨機記錄

    原來語句: select * from admin order by rand() limit 20

    優化為: select * from admin as t1 Join(select round(rand()*((select max(admin_id) from admin)-(select min(id) from admin))+(select min(id) from admin)) as id) as t2 where t1.id>=t2.id order by t1.id limit

  原則8、避免使用NULL

  原則9. 不要使用 count(id) 使用 count(*)

  原則10、不要做無謂的排序操作,而應該使用索引完成排序

三、總結:

  數據庫優化包括兩個方面,一方面是sql 程序優化,另一方面是數據庫配置的優化。另外在mysl 可以通過 以下語句來查看幫助sql進行優化

      
        set
      
      
        @@profiling
      
      
        =
      
      
        1
      
      
        ;


      
      
        select
      
      
        *
      
      
        from
      
       typecho_comments 
      
        order
      
       mail limit 
      
        10
      
      ,
      
        30
      
      
        ;

show profiles;





show profile 
      
      
        for
      
       query 
      
        *
      
    

?

我的mysql數據庫sql優化原則


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99久久99久久精品国产 | 青青青免费视频精品99 | 成年超爽大片免费视频播放 | 五月天婷婷激情网 | 亚洲在线激情 | 91久久亚洲国产成人精品性色 | 欧美三级午夜理伦三级小说 | 国产一区二区三区精品久久呦 | 日日噜噜噜夜夜爽爽狠狠69 | 自拍亚洲午夜伦li片影院 | 99久久中文字幕 | 阿v视频在线观看免费播放 阿v天堂2017 | 国产chinesehd在线观看 | 国产精品久久福利新婚之夜 | 国产精品久久久久久网站 | 十八女人毛片 | 福利毛片 | 国产精品爱啪在线线免费观看 | 久久精品最新免费国产成人 | 日本a一级毛片免费观看 | 国产精品国产三级国产a | 日本综合色 | 全黄大全大色全免费大片 | 久久女人 | 国自产拍在线天天更新91 | 日本a级精品一区二区三区 日本a毛片在线播放 | 亚洲深夜在线 | 性视频久久 | 成人黄18免费视频 | 国产系列欧美系列日韩系列在线 | 国产日韩欧美成人 | 一级做a爱片特黄在线观看免费看 | 天天爽夜夜爽人人爽 | 久久天天躁狠狠躁夜夜躁综合 | 超级碰碰青草久热国产 | 91久久99| 九九热线| 三a毛片| 91福利精品老师国产自产在线 | 国产精品免费视频一区二区三区 | 日本 亚洲 欧美 |