这个我想要优化的查询,在PepTargetEntity和TargetMatchEntity中大约需要大约1.7百万行的数据库上运行大约需要30秒左右,而客户表和SearchEntity表中只有数千行。我希望这样一个简单的语句可以花费几毫秒来完成。
有索引:
如果有人有任何想法,我将不胜感激,提前致谢。
SELECT CustomerId, Rank, PepId, TargetId, FalsePositive
FROM (SELECT T.CustomerId, T.Rank, T.Id AS PepId, NULL AS TargetId, T.FalsePositive, C.Surname, C.Firstname FROM PepTargetEntity T
INNER JOIN Customer C ON T.CustomerId= C.Id
WHERE c.SearchId = 3265 OR 3270 = 0
UNION
SELECT T.CustomerId, T.Rank, Null AS PepId, T.Id AS TargetId, T.FalsePositive, C.Surname, C.Firstname
FROM TargetmATCHEntity T
INNER JOIN Customer C ON T.CustomerId= C.Id
WHERE c.SearchId = 3265 OR 3270 = 0)
ORDER BY Surname ASC,FirstName ASC,Rank DESC
LIMIT 50
OFFSET 0