鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ mysql raw data

mysql raw data

沒(méi)有where的count()使用MyISAM要比InnoDB快得多。因?yàn)镸yISAM內(nèi)置了一個(gè)計(jì)數(shù)器,count()時(shí)它直接從計(jì)數(shù)器中讀,而InnoDB必須掃描全表。所以在InnoDB上執(zhí)行count()時(shí)一般要伴隨where,且where中要包含主鍵以外的索引列。為什么這里特別強(qiáng)調(diào)“主鍵以外”?因?yàn)镮nnoDB中primary index是和raw data存放在一起的,而secondary index則是單獨(dú)存放,然后有個(gè)指針指向primary key。所以只是count()的話使用secondary index掃描更快,而primary key則主要在掃描索引同時(shí)要返回raw data時(shí)的作用較大。

這里的raw data 怎么理解

回答
編輯回答
兔寶寶

raw data 就是整行的內(nèi)容啊。
例如,一個(gè)表有(id, column2, column3, ... , columnN)這N行,那么主鍵索引就是:

id -> (column2, column3, ... , columnN)

如果你只對(duì)column2做一個(gè)一般的索引,那么這個(gè)索引是:

column2 -> id

顯然后者查詢(xún)速度回比前者快得多。

2018年3月5日 14:43