gpt4 book ai didi

sql - 使用 group by 进行复杂 SQL 连接

转载 作者:行者123 更新时间:2023-12-02 18:32:53 25 4
gpt4 key购买 nike

我正在尝试优化一个需要很长时间的查询。查询的目标是获得最佳相似的 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+ 行。更好的方法是什么?

最佳答案

您也可以用这种形式编写您的查询,并且因为您只有一个选择,所以您的检索时间将会减少

SELECT  Test_1.F2, COUNT(Test_1.F1) AS Cnt 
FROM Test
INNER JOIN Test AS Test_1 ON Test.F1 = Test_1.F1 AND Test.F3 = Test_1.F3
WHERE (Test.F2 = 'B')
GROUP BY Test_1.F2

关于sql - 使用 group by 进行复杂 SQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12444397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com