第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

count(release_year = '2006' or NULL)和count(release_year)哪一個更快一些?

select count(release_year = '2006' or NULL) from film;

select count(release_year) from film where release_year = '2006';

連個sql語句哪一個更快一些?

正在回答

3 回答

為什么要加or null?1.因為count(參數(shù)) 只要參數(shù)不為null,都會進行計數(shù),只寫year=2006(相當于year==2006)是個true,計數(shù),如果不加or null,那么year==2007 或者year==2008是個false,也會進行計數(shù)。2.如果加了or null 的話 ,year==2006是個ture,true or null 是true 會計數(shù);year==2007是個false,false or null 等于null,則不會計數(shù)??梢詤⒖歼@個文章https://wangyaoxu.github.io/2017/09/21/mysql-count/

0 回復 有任何疑惑可以回復我~
#1

baoziface

走錯片場了 T-T
2018-12-27 回復 有任何疑惑可以回復我~

樓上又在扯了.....

這分兩種情況討論:

第一種情況,?release_year上沒有索引,?這沒啥好說的,?都是掃全表.

第二種情況,?release_year上有btree索引,?雖然兩個查詢都會用到索引進行查詢,?但是利用的方式是不一樣的, [SQL]select count(release_year = '2006' or NULL) from sakila.film;這條語句會進行全索引的遍歷,?如果explain這個語句你會發(fā)現(xiàn)type是index.?而[SQL]select count(release_year) from sakila.film where release_year = '2006';這條語句會先利用索引找到所有符合where語句條件的記錄后執(zhí)行count, (在數(shù)據(jù)量非常大的情況下)所遍歷的記錄會少很多.

樓上之所以測試時間都相等是因為測試表數(shù)據(jù)太小啦!!?就好像我利用快排排序一個2個元素的數(shù)組和利用冒泡排序排序一個2個元素的數(shù)組時間幾乎是一樣的,?因為測試樣本根本不具有區(qū)分度!

6 回復 有任何疑惑可以回復我~
#1

旺仔小饅頭21

你的意思是加where會更好咯?
2020-04-16 回復 有任何疑惑可以回復我~

差不多快。。。。。。呵呵

[SQL]select count(release_year) from sakila.film where release_year = '2006';

受影響的行: 0

時間: 0.001s

[SQL]select count(release_year = '2006' or NULL) from sakila.film;

受影響的行: 0

時間: 0.001s


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

count(release_year = '2006' or NULL)和count(release_year)哪一個更快一些?

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號