![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
sql: select count(*) from t where id > 10 and id < 1000000; In table t, there is an B-tree index on id field, this sql will read hundreds of thousandes of lines from the storage engine, this is a time-consuming operation. If tell the storage engine computing the count in the range, does it have higher performance? (using records_in_range() api and so on) |
#3
| |||
| |||
|
|
Hi, ??????! On Jan 09, ?????? wrote: sql: select count(*) from t where id> 10 and id< 1000000; In table t, there is an B-tree index on id field, this sql will read hundreds of thousandes of lines from the storage engine, this is a time-consuming operation. If tell the storage engine computing the count in the range, does it have higher performance? (using records_in_range() api and so on) There's no API for that in MySQL yet. records_in_range() is approximate, it cannot be used for count(*). Regards, Sergei |
#4
| |||
| |||
|
|
I think MySQL just need to read the B-Tree index for this count(*). |
|
On 01/09/2011 11:41 PM, Sergei Golubchik wrote: sql: select count(*) from t where id> 10 and id< 1000000; In table t, there is an B-tree index on id field, this sql will read hundreds of thousandes of lines from the storage engine, this is a time-consuming operation. If tell the storage engine computing the count in the range, does it have higher performance? (using records_in_range() api and so on) There's no API for that in MySQL yet. records_in_range() is approximate, it cannot be used for count(*). Regards, |
![]() |
| Thread Tools | |
| Display Modes | |
| |