表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
uj5u.com熱心網友回復:
--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也不需要搞這么復雜
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/63351.html
標籤:基礎類
上一篇:計算機專業起步,主要學習,配什么配置電腦好呢。求大神解答一下,能推薦一下電腦嘛?最好能給我一個資料啦
下一篇:問題
