indexing - Mysql not use index over huge table -
i have next table:
create table `test` ( `fingerprint` varchar(80) collate utf8_unicode_ci not null, `country` varchar(5) collate utf8_unicode_ci not null, `loader` int(10) unsigned not null, `date` date not null, `installer` int(10) unsigned default null, `browser` varchar(5) collate utf8_unicode_ci not null default '', `version` varchar(5) collate utf8_unicode_ci not null default '', `os` varchar(10) collate utf8_unicode_ci not null default '', `language` varchar(10) collate utf8_unicode_ci not null default '', primary key (`fingerprint`, `date`), key `date_1` (`date`), key `date_2` (`date`,`loader`,`installer`,`country`,`browser`,`os`) ) engine=innodb default charset=utf8 collate=utf8_unicode_ci;
right contains 10m records , increase per 2m records / day.
my question, why mysql use "using where" on next query:
explain select count(*) test date between '2013-08-01' , '2013-08-10' 1 simple test range date_1,date_2 date_1 3 1601644 using where; using index
update, why next question have type - , using then:
explain select * test use key(date_1) date between '2013-08-01' , '2013-08-10' 1 simple test date_1 null null null 3648813 using
it does use index.
it says right there: using where; using index
. "using where" doesn't mean full scan, means it's using where
condition provided.
the 1601644 number hints @ that: means expect read 1.6m records, not whole 10m in table, , correlates ~2m/day estimate.
in short, seems doing well, it's lot of data retrieve.
still, it's reading table data too, when seems index should enough. try changing count(*)
count(date)
, date
field mentioned in whole query. if using index
, faster.
Comments
Post a Comment