mysql優(yōu)化 - 關(guān)于mysql查詢時(shí)索引失效及掃描行數(shù)大于數(shù)據(jù)總行數(shù)的疑問(wèn)。
問(wèn)題描述

對(duì)比前兩條語(yǔ)句,第二條沒(méi)有使用索引,我記得是掃描行數(shù)達(dá)到一定行數(shù)時(shí)會(huì)放棄使用索引,這個(gè)臨界值是多少呢?
全表掃描是顯示掃描行數(shù)是 70341 行,而數(shù)據(jù)總行數(shù)卻只有 57087 行?
select count(*) 使用了索引,但是也掃描了 70341 行,這個(gè)語(yǔ)句會(huì)產(chǎn)生性能問(wèn)題嗎?
問(wèn)題解答
回答1:CBO優(yōu)化機(jī)制的數(shù)據(jù)庫(kù)中,沒(méi)有明確的使用或不適用索引的臨界值,以執(zhí)行計(jì)劃中的COST最小為標(biāo)準(zhǔn),經(jīng)驗(yàn)值是取表總行數(shù)小于5%的時(shí)候用索引比較合適。
我理解第二個(gè)語(yǔ)句使用的是表的統(tǒng)計(jì)數(shù)據(jù),如果表最近發(fā)生過(guò)比較大的變更,統(tǒng)計(jì)數(shù)據(jù)有沒(méi)有及時(shí)更新,會(huì)出現(xiàn)兩者偏差較大的情況。
count(*)使用了索引,說(shuō)明update_at字段有NOT NULL的定義,相比較全表掃描,掃描索引的成本會(huì)更低一些。
相關(guān)文章:
1. html5和Flash對(duì)抗是什么情況?2. html5 - datatables 加載不出來(lái)數(shù)據(jù)。3. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個(gè)是怎么回事????4. 利用IPMI遠(yuǎn)程安裝centos報(bào)錯(cuò)!5. node.js - mongodb查找子對(duì)象的名稱為某個(gè)值的對(duì)象的方法6. 運(yùn)行python程序時(shí)出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯(cuò)誤?7. 測(cè)試自動(dòng)化html元素選擇器元素ID或DataAttribute [關(guān)閉]8. javascript - QQ第三方登錄的問(wèn)題9. javascript - 在 model里定義的 引用表模型時(shí),model為undefined。10. spring-mvc - spring-session-redis HttpSessionListener失效

網(wǎng)公網(wǎng)安備