欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql優(yōu)化小技巧之去除重復(fù)項(xiàng)實(shí)現(xiàn)方法分析【百萬級(jí)數(shù)據(jù)】

 更新時(shí)間:2020年01月02日 09:55:16   作者:luyaran  
這篇文章主要介紹了mysql優(yōu)化小技巧之去除重復(fù)項(xiàng)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了mysql去除重復(fù)項(xiàng)的方法,并附帶了隨機(jī)查詢優(yōu)化的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了mysql優(yōu)化小技巧之去除重復(fù)項(xiàng)實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

說到這個(gè)去重,腦仁不禁得一疼,尤其是出具量比較大的時(shí)候。畢竟咱不是專業(yè)的DB,所以嘞,只能自己弄一下適合自己去重方法了。

首先按照常規(guī)首段,使用having函數(shù)檢查重復(fù)項(xiàng),完事一個(gè)一個(gè)的刪除。不要問我having檢測重復(fù)項(xiàng)的sql咋寫,你懂得哈。。。這個(gè)在只有幾條重復(fù)的時(shí)候還可以。要是幾千上萬條不同數(shù)據(jù)重復(fù),那咋辦。。。

完事呢,咱就考慮了,用having函數(shù)查詢的時(shí)候,原始sql如下:

select `name`,count(*) as count from sentence group by `name` having count>1

大家可以運(yùn)行感覺下,在五百萬左右的數(shù)據(jù)時(shí),那速度,麻油。。。

但是嘞,咱在不考慮優(yōu)化它的運(yùn)行速度的前提下,來考慮使用這個(gè)語句來使我們?nèi)コ龜?shù)組中的重復(fù)項(xiàng)。首先,我們要知道,我們刪除重復(fù)數(shù)據(jù)的時(shí)候需要使用的數(shù)據(jù)有哪些。id是肯定的,再來呢,篩選的條件是吧。所以嘞,上面的sql查詢出來的數(shù)據(jù),缺少了啥,id。。。那我們加上這個(gè)字段查詢下試試哈:

select id,`name`,count(*) as count from sentence group by `name` having count>1

結(jié)果呢,就會(huì)顯示出來id,name,count這三個(gè)字段。具體效果大家可以自己運(yùn)行看下。根據(jù)這些數(shù)據(jù)咱們就可以進(jìn)行去除重復(fù)項(xiàng)的操作了。

具體的sql設(shè)計(jì)就是刪除id不是咱們查詢出來的id,但是name值是咱們查詢出來的值,因?yàn)樵蹅兊臄?shù)據(jù)不是一條,所以得經(jīng)過程序處理,把所有的id用逗號(hào)拼接起來,name值用引號(hào)和逗號(hào)處理下,完事就可以進(jìn)行使用了,示例呢就在下方:

delete from sentence where id not in(1,2,3) and name in('a','b','c')

如果數(shù)據(jù)過多的話,咱們可以寫成腳本,完事再進(jìn)行分批次操作。嘿嘿,到了這里,咱們就可以進(jìn)行去除重復(fù)項(xiàng)的操作了,但是這個(gè)速度么,始終是個(gè)困擾。接下來咱們就要考慮如何來優(yōu)化這個(gè)sql,讓它的速度上去,就算是大功告成了。

既然是提升咱們sql的運(yùn)行速度,按照常理來講,首先應(yīng)該想到的那就是索引。好唄,廢話不多說,咱們先建立索引。但是給那個(gè)字段建立所以呢???這又是個(gè)問題了。

這個(gè)原則上是在你name字段可以加以區(qū)分的字段上建立的。比如,我的name字段里面儲(chǔ)存的是一條條的品牌名稱,然后呢,我有一個(gè)industry字段是來存儲(chǔ)每個(gè)品牌的行業(yè)的,所以我就在我的industry字段上建立了索引。當(dāng)然,還有更加合適的,這個(gè)就看大家咋考慮了。廢話不多說,咱直接來看看我們優(yōu)化后的sql:

select id,`name`,count(*) as count from sentence where industry = '飲品' group by `name` having count>1

運(yùn)行結(jié)果如下:

結(jié)果說明啥,說明咱們的索引有在使用哦。。。那速度,咱不說各位看官應(yīng)該也了解。完事咱們就可以再用程序把所有的id用逗號(hào)拼接起來,name值用引號(hào)和逗號(hào)處理下,完事就可以進(jìn)行那個(gè)去除重復(fù)項(xiàng)的大業(yè)了。效率明顯上升啊。。。

不過有的看官可能用的條件里面含有l(wèi)ike等會(huì)使索引失效的條件,那咱們還可以,把數(shù)據(jù)簡單分類,完事分別檢測每個(gè)分類的數(shù)據(jù),全部查詢出來后,可以使用程序來檢查重復(fù)項(xiàng),并且取出刪除所需要的數(shù)據(jù)。

附:mysql rand查詢優(yōu)化&隨機(jī)查詢優(yōu)化

說起這個(gè)隨機(jī)查詢,大家都知道使用rand()函數(shù),但是當(dāng)數(shù)據(jù)量達(dá)到一定程度的時(shí)候,查詢效率就可想而知了。所以呢?我們不妨考慮下優(yōu)化這個(gè)查詢方案。

我的優(yōu)化方式為,通過程序來隨機(jī),再配合limit來取值。咱們記錄下大概思路哈。

首先查詢出符合條件的數(shù)據(jù)條數(shù),之后用PHP的rand函數(shù)來在這個(gè)數(shù)值范圍內(nèi)隨機(jī)取值,之后直接查詢就可以。

示例sql:

select count(*) from test where $where; (計(jì)算所需要的數(shù)據(jù)的總條數(shù))

$offset = rand(0,$count)

select * from test where $where limit $offset,1;   (查詢出所需數(shù)據(jù))

大家可以動(dòng)手試試。五百萬左右的數(shù)據(jù)情況下,查詢速度較之mysql的rand函數(shù)查詢方式快了最少十倍。

好啦,本次分享就到這里了。

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過程技巧大全》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總

希望本文所述對(duì)大家MySQL數(shù)據(jù)庫計(jì)有所幫助。

相關(guān)文章

  • MySQL 大表的count()優(yōu)化實(shí)現(xiàn)

    MySQL 大表的count()優(yōu)化實(shí)現(xiàn)

    這篇文章主要介紹了MySQL 大表的count()優(yōu)化實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • mysql缺少my.ini文件的最佳解決方法

    mysql缺少my.ini文件的最佳解決方法

    my.ini是MySQL數(shù)據(jù)庫中使用的配置文件,修改這個(gè)文件可以達(dá)到更新配置的目的,下面這篇文章主要給大家介紹了關(guān)于mysql缺少my.ini文件的最佳解決方法,需要的朋友可以參考下
    2024-01-01
  • mysql同步復(fù)制搭建方法指南詳細(xì)步驟

    mysql同步復(fù)制搭建方法指南詳細(xì)步驟

    MySQL數(shù)據(jù)同步主要有三種方式: 1.利用MySQL自身的數(shù)據(jù)庫同步功能 2.利用MySQL數(shù)據(jù)庫的特性(數(shù)據(jù)庫存在固頂目錄,并且以文件形式存儲(chǔ)),進(jìn)行數(shù)據(jù)庫目錄同步以達(dá)到數(shù)據(jù)同步目的 3.利用專用的MySQL數(shù)據(jù)庫同步軟件
    2008-04-04
  • 解決MySQl查詢不區(qū)分大小寫的方法講解

    解決MySQl查詢不區(qū)分大小寫的方法講解

    今天小編就為大家分享一篇關(guān)于解決MySQl查詢不區(qū)分大小寫的方法講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • linux mint 下mysql中文支持問題

    linux mint 下mysql中文支持問題

    這篇文章主要介紹了linux mint 下mysql中文支持問題的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • 詳解數(shù)據(jù)庫語言中的null值

    詳解數(shù)據(jù)庫語言中的null值

    這篇文章主要詳解了數(shù)據(jù)庫語言中的null值,針對(duì)MySQL上的實(shí)例進(jìn)行講解,需要的朋友可以參考下
    2015-04-04
  • mysql read_buffer_size 設(shè)置多少合適

    mysql read_buffer_size 設(shè)置多少合適

    很多朋友都會(huì)問mysql read_buffer_size 設(shè)置多少合適,其實(shí)這個(gè)都是根據(jù)自己的內(nèi)存大小等來設(shè)置的
    2016-05-05
  • 結(jié)合PHP腳本添加和查詢MySQL數(shù)據(jù)的基本教程

    結(jié)合PHP腳本添加和查詢MySQL數(shù)據(jù)的基本教程

    這篇文章主要介紹了結(jié)合PHP腳本添加和查詢MySQL數(shù)據(jù)的基本教程,即在PHP程序中使用基本的SELECT FROM和INSERT INTO語句,需要的朋友可以參考下
    2015-12-12
  • Mysql合并結(jié)果接橫向拼接字段的實(shí)現(xiàn)步驟

    Mysql合并結(jié)果接橫向拼接字段的實(shí)現(xiàn)步驟

    這篇文章主要給大家介紹了關(guān)于Mysql合并結(jié)果接橫向拼接字段的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • mysql排序失效問題的解決

    mysql排序失效問題的解決

    本文主要介紹了mysql排序失效問題的解決,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評(píng)論