mysql 表在设计时 主键不是 int 自增,,,,是一个string 类型,,,现在 分页查询时,,带条件 很慢 怎么解决 [count(*)表 where]
贴下表结构,索引信息,分页查询语句
表的 列
很多问题需要考虑
1、数据量
2、查询语句
3、数据服务器性能
4、到底有多慢?几秒、几十秒、几分钟、几个小时?
5、你怎么观察到慢的?有时候慢是其他原因造成的,比如UI渲染、网络传输。
这些你都不说,谁知道呢?
以前 几万 数据量 没有 体现出现,,,现在 30w的数据,,,有条件的 count(*)一次 大约 要三秒
select count(*)
as total from insurancepolicy as d1 JOIN insuranceproduct as d2 on d1.ProductCode=d2.ProductCode where 1=1
and d1.PayStatus='已支付' and d1.PolStatusValue='已生效'
就这句话 加where 要三秒 不加0.2秒
@孩丿: PayStatus和PolstatusValue 是否有索引?
在Navicat直接 执行 这句话 就很慢,,,不存在 渲染和网络问题,,就
@爱编程的大叔: 没有加索引 加了 要4秒
ProductCode加索引试试
这个 有索引
insurancepolicy 表, ProductCode PayStatus PolstatusValue 这三个字段建立一个索引
然后explain一下 看看是否用到索引