mysql查询优化count(*)-查询记录总条数(一)
生活随笔
收集整理的這篇文章主要介紹了
mysql查询优化count(*)-查询记录总条数(一)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
計算表記錄總量最直接的方法就是使用count()
比如:select count(*) from 表名;
也有人喜歡這么寫:
select count(字段名) from 表名;
這兩種寫法都可以得到結(jié)果,不過效果略有不同。
count(*)一定返回的是表記錄總量
count(字段名)返回的是該字段不為null值的記錄總量。它有可能跟count(*)相等,也可能不等。
所以要慎用count(字段名)這種寫法。
在表記錄較多的情況,count(*)執(zhí)行時間會較長。例如我公司有一張表內(nèi)數(shù)據(jù)1億條,執(zhí)行時間47秒。
在生產(chǎn)環(huán)境這非常可怕。因為這一慢查詢的執(zhí)行,可能引起其他sql的效率低下,有可能引起鏈?zhǔn)椒磻?yīng)像核爆炸那樣耗盡服務(wù)器資源。
我們盡量要在生產(chǎn)環(huán)境避免這類語句執(zhí)行。如果一定要,那么在滿足一定條件下可以使用下面的小技巧來優(yōu)化。
第一個條件是該表擁有自增長字段,并定義為主鍵。
第二個條件是該表不刪除記錄或只從頭部刪除數(shù)據(jù)。即保持表內(nèi)記錄的連續(xù)性。
滿足以上條件,我們就可以使用下面的語句來替代count
總結(jié)
以上是生活随笔為你收集整理的mysql查询优化count(*)-查询记录总条数(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 破解Access(*.mdb)目前所有版
- 下一篇: 36、有效的数独 | 算法(leetod