文章詳情頁
mysql優(yōu)化 - 關(guān)于mysql查詢時(shí)索引失效及掃描行數(shù)大于數(shù)據(jù)總行數(shù)的疑問。
瀏覽:95日期:2022-06-10 17:35:38
問題描述
對(duì)比前兩條語句,第二條沒有使用索引,我記得是掃描行數(shù)達(dá)到一定行數(shù)時(shí)會(huì)放棄使用索引,這個(gè)臨界值是多少呢?
全表掃描是顯示掃描行數(shù)是 70341 行,而數(shù)據(jù)總行數(shù)卻只有 57087 行?
select count(*) 使用了索引,但是也掃描了 70341 行,這個(gè)語句會(huì)產(chǎn)生性能問題嗎?
問題解答
回答1:CBO優(yōu)化機(jī)制的數(shù)據(jù)庫中,沒有明確的使用或不適用索引的臨界值,以執(zhí)行計(jì)劃中的COST最小為標(biāo)準(zhǔn),經(jīng)驗(yàn)值是取表總行數(shù)小于5%的時(shí)候用索引比較合適。
我理解第二個(gè)語句使用的是表的統(tǒng)計(jì)數(shù)據(jù),如果表最近發(fā)生過比較大的變更,統(tǒng)計(jì)數(shù)據(jù)有沒有及時(shí)更新,會(huì)出現(xiàn)兩者偏差較大的情況。
count(*)使用了索引,說明update_at字段有NOT NULL的定義,相比較全表掃描,掃描索引的成本會(huì)更低一些。
相關(guān)文章:
1. mysql優(yōu)化 - MySQL如何為配置表建立索引?2. 如何用筆記本上的apache做微信開發(fā)的服務(wù)器3. 我在網(wǎng)址中輸入localhost/abc.php顯示的是not found是為什么呢?4. 數(shù)據(jù)庫 - Mysql的存儲(chǔ)過程真的是個(gè)坑!求助下面的存儲(chǔ)過程哪里錯(cuò)啦,實(shí)在是找不到哪里的問題了。5. 關(guān)于mysql聯(lián)合查詢一對(duì)多的顯示結(jié)果問題6. 冒昧問一下,我這php代碼哪里出錯(cuò)了???7. windows誤人子弟啊8. php傳對(duì)應(yīng)的id值為什么傳不了啊有木有大神會(huì)的看我下方截圖9. MySQL主鍵沖突時(shí)的更新操作和替換操作在功能上有什么差別(如圖)10. 實(shí)現(xiàn)bing搜索工具urlAPI提交
排行榜

熱門標(biāo)簽