当表有100-200条记录时,我正在使用此命令在两个表中查找相同的值。但是当表有100000-20000条记录时,sql管理器,浏览器,电脑很快就会被释放。
是否有替代命令?
SELECT
distinct
names
FROM
table1
WHERE
names in (SELECT names FROM table2)
答案 0 :(得分:4)
尝试使用join
SELECT distinct t1.names
FROM table1 t1
join table2 t2 on t2.names = t1.names
答案 1 :(得分:1)
使用EXISTS
:
SELECT distinct t1.names
FROM Table1 t1
WHERE EXISTS(
SELECT 1 FROM tabl2 t2 WHERE t2.names=t1.names
)
答案 2 :(得分:1)
SELECT DISTINCT t1.names
FROM table1 t1
INNER JOIN table2 t2 on t1.names=t2.names
使用INNER JOIN可确保只从两个表返回完全匹配。它应该相对较快,但长期可能需要索引,特别是如果你将它们用于其他JOIN和GROUP BY等等。
答案 3 :(得分:0)
一个简单的连接也会这样做。 确保列已编入索引。
select distinct t1.names
from table1 t1, table2 t2
where t1.names = t2.names
答案 4 :(得分:0)
从两个表中显示names
,其中有匹配
SELECT names
FROM table1
UNION ALL
SELECT names
FROM table2
此查询将返回重复值(如果有)。如果您只想要不同的值,那么试试这个,但请注意会对性能产生影响
SELECT names
FROM table1
UNION
SELECT names
FROM table2
答案 5 :(得分:0)
SELECT table1.names
FROM table1
INNER JOIn table2
ON table1.names = table2.names
Group By table1.names