表格广告大约有0.5 mio行。
我使用的时间
select sql_calc_found_rows * from `ads`
where cat1<>24 and
curdate()<=expiry and
offl=0
order by ads.date desc ,id desc
limit 0,30
每次都几乎需要相同的时间-即使广告没有变化。 mysql没有注意到这个事实吗?并加快???因此,当再次查询时,时间应该几乎为零。
答案 0 :(得分:0)
查询缓存
质量控制将非常快速地交付保存的结果集。但是,由于对表的限制没有改变,因此生产系统很少会从质量控制中受益。
innodb_buffer_pool
第一次运行查询时,数据可能位于磁盘上。因此查询必须获取数据并将其放入buffer_pool才能对其进行操作。
后续运行查询时,数据可能仍在该缓存中。如果是这样,它将更快。
索引
正确的索引编制是您加快查询速度的第一道防线。该特定查询可以受益于以下之一。 (很难说哪一种是最好的;只会使用一种。)
INDEX(date, id)
INDEX(offl, expiry)
INDEX(offl, cat1, expiry)