最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql高效查詢left join和group by(加索引)

 更新時(shí)間:2021年06月11日 11:37:34   作者:ZhangJQKb  
這篇文章主要給大家介紹了關(guān)于mysql高效查詢left join和group by,這個(gè)的前提是加了索引,以及如何在MySQL高效的join3個(gè)表 的相關(guān)資料,需要的朋友可以參考下

mysql高效查詢

mysql犧牲了group by來增加left join的速度(前提是加了索引)。

user表:10萬數(shù)據(jù)

實(shí)例1: 200秒左右

SELECT U.id, A.favorite_count FROM (SELECT id from user) U
LEFT JOIN (
  -- 點(diǎn)贊數(shù)
  SELECT favorite_by AS user_id, SUM(favorite_count) AS favorite_count
  FROM favorite
  GROUP BY favorite_by
)  A ON U.id=A.user_id
LEFT JOIN (
  -- 評論數(shù)量
  SELECT user_id, COUNT(*) AS comment_count
  FROM photo_comment
  GROUP BY user_id
) B ON U.id=B.user_id

實(shí)例2:1秒多

select uf.user_id , uf.favorite_count, COUNT(pc.id) as comment_count from (
select u.id as user_id , SUM(f.favorite_count) as favorite_count from (SELECT id from user) u 
LEFT JOIN favorite f on f.favorite_by = u.id  
GROUP BY u.id
) uf 
LEFT JOIN photo_comment pc on pc.user_id = uf.user_id
GROUP BY uf.user_id

附:如何在MySQL高效的join3個(gè)表

對于下面這個(gè)三個(gè)表的join語句

select * 
from t1 
join t2 on(t1.a=t2.a) 
join t3 on (t2.b=t3.b) 
where t1.c>=X and t2.c>=Y and t3.c>=Z;

若改寫成straight_join,要怎么指定連接順序,以及怎么給三個(gè)表創(chuàng)建索引?

盡量使用BKA算法

使用BKA,并非“先計(jì)算兩個(gè)表join的結(jié)果,再跟第三個(gè)表join”,而是直接嵌套查詢的。具體實(shí)現(xiàn):在t1.c>=X、t2.c>=Y、t3.c>=Z這三個(gè)條件里,選擇一個(gè)經(jīng)過過濾以后,數(shù)據(jù)最少的那個(gè)表,作為第一個(gè)驅(qū)動表。此時(shí),可能會出現(xiàn)如下兩種情況。

如果選出來是表t1或者t3,那剩下的部分就固定了:

  • 如果驅(qū)動表是t1,則連接順序是t1->t2->t3,要在被驅(qū)動表字段創(chuàng)建上索引,也就是t2.a 和 t3.b上創(chuàng)建索引
  • 如果驅(qū)動表是t3,則連接順序是t3->t2->t1,需要在t2.b 和 t1.a上創(chuàng)建索引。

同時(shí),我們還需要在第一個(gè)驅(qū)動表的字段c上創(chuàng)建索引。

第二種情況是,若選出來的第一個(gè)驅(qū)動表是表t2,則需要評估另外兩個(gè)條件的過濾效果。

思路就是,盡量讓每一次參與join的驅(qū)動表的數(shù)據(jù)集,越小越好,因?yàn)檫@樣我們的驅(qū)動表就會越小。

總結(jié)

到此這篇關(guān)于mysql高效查詢left join和group by的文章就介紹到這了,更多相關(guān)mysql高效查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 年底了,你的mysql密碼安全嗎

    年底了,你的mysql密碼安全嗎

    這篇文章主要介紹了MySQL密碼安全的相關(guān)知識,幫助大家更好的使用數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-01-01
  • 深入了解mysql長事務(wù)

    深入了解mysql長事務(wù)

    這篇文章主要介紹了mysql長事務(wù)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)mysql,感興趣的朋友可以了解下
    2020-08-08
  • Mysql數(shù)據(jù)庫的日志管理、備份與回復(fù)詳細(xì)圖文教程

    Mysql數(shù)據(jù)庫的日志管理、備份與回復(fù)詳細(xì)圖文教程

    備份的主要目的是災(zāi)難恢復(fù),備份還可以測試應(yīng)用、回滾數(shù)據(jù)修改、查詢歷史數(shù)據(jù)、審計(jì)等,這篇文章主要給大家介紹了關(guān)于Mysql數(shù)據(jù)庫的日志管理、備份與回復(fù)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • 三種東西永遠(yuǎn)不要放到mysql數(shù)據(jù)庫里

    三種東西永遠(yuǎn)不要放到mysql數(shù)據(jù)庫里

    這篇文章主要介紹了mysql數(shù)據(jù)庫不能存儲的三樣?xùn)|西,需要的朋友可以參考下
    2014-06-06
  • Mysql5.6啟動內(nèi)存占用過高解決方案

    Mysql5.6啟動內(nèi)存占用過高解決方案

    vps的內(nèi)存為512M,安裝好nginx,php等啟動起來,mysql死活啟動不起來看了日志只看到對應(yīng)pid被結(jié)束了,后跟蹤看發(fā)現(xiàn)是內(nèi)存不足被killed;mysql5.6啟動內(nèi)存占用過高怎么辦呢,下面小編給大家解答下
    2016-09-09
  • 計(jì)算機(jī)二級考試MySQL知識點(diǎn) mysql alter命令

    計(jì)算機(jī)二級考試MySQL知識點(diǎn) mysql alter命令

    這篇文章主要為大家詳細(xì)介紹了計(jì)算機(jī)二級考試MySQL知識點(diǎn),詳細(xì)介紹了mysql中alter命令的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Mysql使用on update current_timestamp問題

    Mysql使用on update current_timestamp問題

    這篇文章主要介紹了Mysql使用on update current_timestamp問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 刪除MySQL重復(fù)數(shù)據(jù)的方法

    刪除MySQL重復(fù)數(shù)據(jù)的方法

    這篇文章主要介紹了刪除MySQL重復(fù)數(shù)據(jù)的方法,通過建立中間表實(shí)現(xiàn)針對冗余數(shù)據(jù)的刪除功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12
  • MySQL數(shù)據(jù)庫簡介與基本操作

    MySQL數(shù)據(jù)庫簡介與基本操作

    這篇文章介紹了MySQL數(shù)據(jù)庫與其基本操作,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • MySQL8.0登錄時(shí)出現(xiàn)Access?denied?for?user?‘root‘@‘localhost‘?(using?password:?YES)?拒絕訪問的完美解決

    MySQL8.0登錄時(shí)出現(xiàn)Access?denied?for?user?‘root‘@‘localhost‘?

    這篇文章主要給大家介紹了解決MySQL8.0登錄時(shí)出現(xiàn)Access?denied?for?user?‘root‘@‘localhost‘?(using?password:?YES)?拒絕訪問的問題,文中有詳細(xì)的解決方法,需要的朋友可以參考下
    2023-09-09

最新評論

刚察县| 咸宁市| 廊坊市| 盐津县| 安福县| 嘉峪关市| 阳朔县| 三明市| 横山县| 安徽省| 青海省| 全州县| 新乡市| 石棉县| 林芝县| 原平市| 漠河县| 湖口县| 宜宾市| 安义县| 宜黄县| 金平| 岳阳市| 同德县| 舞钢市| 甘孜县| 巨野县| 长乐市| 诏安县| 福建省| 南涧| 北京市| 浮山县| 滕州市| 清徐县| 荃湾区| 静宁县| 丰都县| 抚州市| 丹凤县| 邢台市|