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

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

MySQL:計(jì)算行數(shù)的最快方法

MySQL:計(jì)算行數(shù)的最快方法

楊魅力 2019-11-12 10:11:28
在MySQL中,哪種方式計(jì)算行數(shù)應(yīng)該更快?這個(gè):SELECT COUNT(*) FROM ... WHERE ...或者,替代方案:SELECT 1 FROM ... WHERE ...// and then count the results with a built-in function, e.g. in PHP mysql_num_rows()有人會認(rèn)為第一種方法應(yīng)該更快,因?yàn)樵趦?nèi)部確定類似情況時(shí),這顯然是數(shù)據(jù)庫領(lǐng)域,而數(shù)據(jù)庫引擎應(yīng)該比其他任何人都要快。
查看完整描述

3 回答

?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

當(dāng)您COUNT(*)使用count列索引時(shí),它將是最好的結(jié)果。使用MyISAM引擎的Mysql 實(shí)際上存儲行數(shù),每次嘗試對所有行進(jìn)行計(jì)數(shù)時(shí),它都不會對所有行進(jìn)行計(jì)數(shù)。(基于主鍵的列)


使用PHP計(jì)數(shù)行不是很聰明,因?yàn)槟仨殞?shù)據(jù)從mysql發(fā)送到php。當(dāng)您可以在mysql端實(shí)現(xiàn)相同的目的時(shí),為什么要這樣做呢?


如果COUNT(*)速度較慢,則應(yīng)EXPLAIN在查詢上運(yùn)行,并檢查是否確實(shí)使用了索引以及應(yīng)將索引添加到何處。


以下不是最快的方法,但是在某些情況下,這COUNT(*)并不完全適合-在開始對結(jié)果進(jìn)行分組時(shí),您可能會遇到問題,即COUNT實(shí)際上并沒有計(jì)算所有行。


解決方法是SQL_CALC_FOUND_ROWS。通常在選擇行但仍需要知道總行數(shù)(例如,用于分頁)時(shí)使用。選擇數(shù)據(jù)行時(shí),只需SQL_CALC_FOUND_ROWS在SELECT之后附加關(guān)鍵字:


SELECT SQL_CALC_FOUND_ROWS [needed fields or *] FROM table LIMIT 20 OFFSET 0;

選擇所需的行后,可以通過以下單個(gè)查詢獲取計(jì)數(shù):


SELECT FOUND_ROWS();

FOUND_ROWS() 必須在數(shù)據(jù)選擇查詢后立即調(diào)用。


總之,實(shí)際上,一切都取決于您有多少個(gè)條目以及WHERE語句中的內(nèi)容。當(dāng)有很多行(數(shù)萬,數(shù)百萬甚至更多)時(shí),您應(yīng)該真正注意索引的使用方式。


查看完整回答
反對 回復(fù) 2019-11-12
?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

與我的隊(duì)友交談后,里卡多告訴我們更快的方法是:


show table status like '<TABLE NAME>' \G

但是您必須記住,結(jié)果可能并不準(zhǔn)確。


您也可以從命令行使用它:


$ mysqlshow --status <DATABASE> <TABLE NAME>

更多信息:http : //dev.mysql.com/doc/refman/5.7/en/show-table-status.html


您可以在mysqlperformanceblog上找到完整的討論


查看完整回答
反對 回復(fù) 2019-11-12
?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊

此查詢(與bayuah發(fā)布的內(nèi)容類似)顯示了數(shù)據(jù)庫中所有表計(jì)數(shù)的不錯(cuò)摘要:(我強(qiáng)烈建議Ivan Cachicatari簡化存儲過程的版本)。


SELECT TABLE_NAME AS 'Table Name', TABLE_ROWS AS 'Rows' FROM information_schema.TABLES WHERE TABLES.TABLE_SCHEMA = '`YOURDBNAME`' AND TABLES.TABLE_TYPE = 'BASE TABLE'; 

例:


+-----------------+---------+

| Table Name      | Rows    |

+-----------------+---------+

| some_table      |   10278 |

| other_table     |     995 |


查看完整回答
反對 回復(fù) 2019-11-12
  • 3 回答
  • 0 關(guān)注
  • 1503 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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