私は2つのテーブルを持っています。私はテーブル1のすべての行をテーブル2にあり、それを元に戻したいと思います。私は答えがありましたが、より速くしたいです。 例:最適化 - SQL:すべてのデータを複数のテーブルに表示する方法
Create table One (ID INT, Value INT, location VARCHAR(10))
Create table Two (ID INT, Value INT, location VARCHAR(10))
INSERT INTO One VALUES(1,2,'Hanoi')
INSERT INTO One VALUES(2,1,'Hanoi')
INSERT INTO One VALUES(1,4,'Hanoi')
INSERT INTO One VALUES(3,5,'Hanoi')
INSERT INTO Two VALUES(1,5,'Saigon')
INSERT INTO Two VALUES(4,6,'Saigon')
INSERT INTO Two VALUES(5,7,'Saigon')
INSERT INTO Two VALUES(2,8,'Saigon')
INSERT INTO Two VALUES(2,8,'Saigon')
と解答:
SELECT * FROM One WHERE ID IN (SELECT ID FROM Two)
UNION ALL
SELECT *FROM Two WHERE ID IN (SELECT ID FROM One)
このクエリでは、システムは、私は、システムが一度テーブル倍(表一をスキャンしたいテーブルを4回 enter image description here
をスキャンし、テーブル2回)。
私はクレイジーですか?
まあ..それは、最初に私はINの代わりにEXISTSに行きます。次に、適切なインデックスを実装します。 – DNac
両方のテーブル間でIDのInner Joinを実行できませんでしたか? – DB101
すみません。私の英語はとても悪いです。 私は質問を修正しました。 –