mysql5下大数据量查询优化的问题

一个blog表,目前数据大概90多w,短期内可预见的数据量会是200w以内。

一个user表,目前数据大概2000w,短期内可预见数据量在3000w以内。

 

其中blog表有userid做外键,与user表的主键id关联。同时有manager字段,代表审核状态,分别为0、1、2。预计0的记录非常少,1的记录相对较少,2的比较非常多。createTime 字段为数字型,保存unix时间戳。

 

而实际查询中的SQL为

FROM blog AS m INNER JOIN user as s ON m.userID = s.ID WHERE m.manager = 2 ORDER BY m.ID DESC

 

优化的手段包括:

1、使用innodb引擎

2、对blog表做hash分区,分区字段为主键ID

3、对user表做hash分区,分区字段为主键ID

4、查询时加入时间条件限制范围

5、对manager和createTime做联合索引

 

最终的SQL为:

FROM blog AS m INNER JOIN user as s ON m.userID = s.ID WHERE m.manager = 2 AND m.createTime >= ? AND m.createTime <= ? ORDER BY m.ID DESC LIMIT 0,20

 

即使如此,涉及的数据量也在20w以内。因此这条SQL会卡死mysql服务。求优化方法。。。

你可能感兴趣的:(数据结构,sql,mysql,Blog,全文检索)