mysql的一张数据表,数据量达到了千万级别,查询时从中获取一类数据最近的一条数据,怎么进行数据查询,首先排除分区分表的做法,索引我加了主键索引:下面我举个例子:select lasttime from  userlog  where username = 'zhangsan' order by lasttime desc limit 1;
类似这个语句!userlog这张表用来记录用户相关操作,lasttime是用户操作的时间,查询张三的时候发现查询特别慢,,我在username和lasttime上创建了索引可是查询时间还是很长!

解决方案 »

  1.   

    如果username和lasttime建立了联合索引 不应该慢的  看看查询计划
      

  2.   

    username字段,张三的数据有大约22w+的数据,创建联合索引,光是索引都特别大,而且数据库的存储引擎使用的是innerDB的
      

  3.   

    我使用explain查询了一下,,我之前给username和lasttime分别加了普通索引,,后来我有给数据表加了组合索引。。但是依然很慢。。
    explain查询的结果是ref。。
    username字段,张三的数据有大约22w+的数据,创建联合索引,光是索引都特别大,而且数据库的存储引擎使用的是innerDB的 
      

  4.   

    以文本方式贴出  不要贴截图
    explain select ...
    show index from ..
    以供分析。
      

  5.   


    这个只能创建索引,组合索引:create index idx_userlog_xxx on userlog(username,lasttime desc)