mysql 单表数据达百万时 分页查询数据倒是没什么变化 但做分页时count一下总数就会特别慢
所以我决定全量查询总数时做一下处理
explain SELECT
sql_cache
count(1) AS totalX
FROM
cms_forecast_nearshoreseaarea
利用mysql自带的表数据统计一下大概数量
select TABLE_ROWS from information_schema.`TABLES` WHERE TABLE_NAME = 'cms_forecast_nearshoreseaarea'
表里又有一些全量查询不需要展示 的数据
count他们的数量就比较快 从总数减去即可
-------------------------------------------------------------------------------------------------------------------------------
最近发现jeesite内count用的是全字段 把全字段去除后查询速度明显提升
修改SQLHelper 内的 getCount方法
sql="select 1 "+removeSelect(removeOrders(sql));
countSql = "select count(1) from (" + sql + ") tmp_count";
在之后还有limit分页几万页以后速度依然不行
1.加复合索引
2.
SELECT * FROM cms_forecast WHERE ID > =(select id from cms_forecast limit 966666, 1) limit 20
OR
SELECT * FROM cms_forecast a JOIN (select id from cms_forecast limit 966666, 20) b ON a.ID = b.id
注:少量数据时此方法反而影响效率