对于分页查询这类sql,你可以通过开启子查询缓存来优化性能。 但是,关于这个优化这里有几个需要注意的点。
由于子查询结果集缓存,查询的结果可能是旧的(如果更新了数据)。 缓存数据在lightdb_result_cache_clean_interval 时间后会被清理(然后在下次查询的时候被重新创建)。
目前你必须使用'lt_result_cache'提示来启用这个优化。 这个提示只能作用于查询中的第一层子查询,且顶层查询只能有一个子查询,没有其他表。 下面是一个使用例子:
create table test_p(key1 int primary key, key2 text); insert into test_p select s, 'dsdsds' from generate_series(1, 1000000) as s; create table test_p1(key1 int primary key, key2 text); insert into test_p1 select s, 'dsdsds' from generate_series(1, 1000000) as s; select * from ( select/*+lt_result_cache*/ rownum as row_num , a.* from (select x.key1 from (select * from test_p order by key2) x, (select * from test_p1 order by key2) x1 where x.key1=x1.key1*2 order by x.key1 ) a )b where row_num >1 and row_num < 5;
lightdb_result_cache_clean_interval 选项决定了缓存清理间隔。