我正在尝试优化需要很长时间的查询。查询的目标是获得最相似的 F2 。(特别是相似性度量)这是我所拥有的一个示例:
CREATE TABLE Test
(
F1 varchar(124),
F2 varchar(124),
F3 varchar(124)
)
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'A', 'B', 'C' )
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'D', 'B', 'E' )
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'F', 'I', 'G' )
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'F', 'I', 'G' )
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'D', 'B', 'C' )
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'F', 'B', 'G' )
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'D', 'I', 'C' )
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'A', 'B', 'C' )
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'A', 'B', 'K' )
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'A', 'K', 'K' )
现在如果我运行这个查询:
SELECT B.f2,COUNT(*) AS CNT
FROM
(
select F1,F3 from Test
where F2='B'
)AS A
INNER JOIN Test AS B
ON A.F1 = B.F1 AND A.F3 = B.F3
GROUP BY B.F2
ORDER BY CNT DESC
该表有 1m+ 行。有什么更好的方法来做到这一点?