按天分表 ,检索慢。

pujitan978 2020-02-26 09:33:31
表A,每天数据很大(800万行),现在一天一个表。web页面,可以按指定条件检索。
例如检索期间 2020/02/10 ~2020/02/26 机器ID = 5 状态是关机 的所有数据(200条),分页,每页显示20条。
检索时间 30秒。怎么提高检索速度呢?

tableList :根据期间取出所有表明 table1_20200210~table1_202002226
SELECT
YYYYY.id AS "id"
,YYYYY.name AS "name"
,YYYYY.status AS "status"
,YYYYY.machineId AS "machineId"
FROM (
<foreach collection="tableList" item="tableName" separator=" UNION ALL ">
SELECT
ZZZZZ.id AS id
,ZZZZZ.name AS name
,ZZZZZ.status AS status
,ZZZZZ.machineId AS machineId
FROM tableName AS ZZZZZ
WHERE ZZZZZ.deleted = 0
AND ZZZZZ.status = 2
AND ZZZZZ.machineId = 5
AND ZZZZZ.start_time >= '2020-02-10 09:11:06.0'
AND ZZZZZ.start_time < '2020-02-26 10:11:06.0'
</foreach>
) AS YYYYY
LEFT JOIN tbl_Machine AS machine
ON YYYYY.machineId = machine.id
LEFT JOIN tbl_team AS team
ON machine.area_id = team.id
limit 10
...全文
20 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2020-02-26
  • 打赏
  • 举报
回复
--1. 为所有数据表创建索引, 类似下面
CREATE INDEX IX_tableName_start_time_machineId ON tableName(start_time,machineId)
GO
--2. 创建一个视图,关联所有数据表
CREATE VIEW view_all
AS
SELECT * FROM table1_20200210
UNION ALL 
SELECT * FROM table1_20200211
……
GO
--3. 创建一个 sql 作业,每天凌晨0点更新这个视图

--4. 前端查询直接查询视图

这样,速度能快起来, 你写sql也不需要搞这么复杂

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧