JOIN
查询包含大量数据的下表。这对 java jdbc 和 jpa 执行非常慢。
用例 UI 有一个选择交易者列表、类别和日期范围的选项。如果我从下拉列表中选择 1 周日期范围和所有交易者,以下查询是否会将 1 周股票表的记录与来自 stock_trader 的所有记录连接起来?
STOCK
------------------------------------------
stock_id long | PRIMARY KEY AUTO_INCREMENT
stock_code | varchar(10)
stock_name |varchar(10)
created_date |DATETIME
category |varchar(10)
STOCK_TRADER
-----------------------------------------
stock_id | long
trader_name | FULLTEXT
SQL查询
Select * from STOCK st join stock_trader trad
on st.stock_id=trad.stock_id where st.created_date<CURRENT_TIMESTAMP()
and trad.trader_name in(:traderlist)
group by st.stock_id
traderlist:从 UI 中选择的交易者列表
stock_trader
如果我使用下面的数据模型添加一个额外的列并加入多个列,请评论性能提升。我可以期待以下查询的更快响应,该查询仅映射来自 stock 表的 1 周记录与来自 stock_trader 的 1 周交易者。
- 有什么办法可以最小化查询的处理时间?100 万条数据的平均执行时间是多少。
如果下面的连接被替换为视图并在来自 java jdbc/jpa 的视图上应用 where 子句会怎样。我发现 view 使执行速度更快,但担心它会加入整个数据集,因为 where 子句是从 UI 动态应用的。如果是这样,性能会慢得多,对吧?
STOCK_TRADER ----------------------------------------- stock_id | long trader_name | FULLTEXT created_date | DATETIME
SQL查询
Select * from STOCK st join stock_trader trad on st.stock_id=trad.stock_id and st.created_date =trad.created_date where st.created_date<CURRENT_TIMESTAMP() and trad.trader_name in(:traderlist) group by st.stock_id