テーブルに 100 ~ 200 のレコードがある場合、このコマンドを使用して 2 つのテーブルで同じ値を検索しています。しかし、テーブルに 100000 ~ 20000 のレコードがある場合、SQL マネージャ、ブラウザ、まもなくコンピュータが解放されます。
これに代わるコマンドはありますか?
SELECT
distinct
names
FROM
table1
WHERE
names in (SELECT names FROM table2)
試してみてくださいjoin
SELECT distinct t1.names
FROM table1 t1
join table2 t2 on t2.names = t1.names
SELECT DISTINCT t1.names
FROM table1 t1
INNER JOIN table2 t2 on t1.names=t2.names
INNER JOIN を使用すると、両方のテーブルから完全に一致するものだけが返されます。比較的迅速なはずですが、特に他の JOIN や GROUP BY などにインデックスを使用している場合は、長期間にわたってインデックスが必要になる場合があります。
使用EXISTS
:
SELECT distinct t1.names
FROM Table1 t1
WHERE EXISTS(
SELECT 1 FROM tabl2 t2 WHERE t2.names=t1.names
)
一致する両方のテーブルnames
から表示する
SELECT names
FROM table1
UNION ALL
SELECT names
FROM table2
このクエリは、重複する値がある場合に返します。個別の値のみが必要な場合は、これを試してください。ただし、パフォーマンスに影響があることに注意してください
SELECT names
FROM table1
UNION
SELECT names
FROM table2
単純な結合もそれを行います。列にインデックスが付けられていることを確認してください。
select distinct t1.names
from table1 t1, table2 t2
where t1.names = t2.names
SELECT table1.names
FROM table1
INNER JOIn table2
ON table1.names = table2.names
Group By table1.names