有人可以帮我优化我的 SQL 查询。数据库是postgres。我的表结构如下:
create table test_table(test_id integer NOT NULL, sequence_id integer NOT NULL,value1 integer NOT NULL, value2 integer NOT NULL, CONSTRAINT test_table_pk PRIMARY KEY (test_id , sequence_id ))
create table test_event(event_id integer NOT NULL,test_id integer NOT NULL, sequence_id integer NOT NULL , CONSTRAINT test_event_pk PRIMARY KEY(event_id , test_id, sequence_id))
test_table
1,1, 200,300
2,2, 400,500
2,3, 600,700
2,4, 300,500
2,5, 200,900
test_event
1, 1,1
1, 2,2
1, 2,3
2, 2,4
2, 2,5
我想从 test_table 中获取所有 value1 和 value2,其中 sequence_id 和 test_id 对应于 test_event 中的 event_id =1。我的查询看起来像
SELECT
value1, value2
FROM
test_table
WHERE
sequence_id IN (
SELECT sequence_id
FROM test_event
WHERE event_id=1) AND
test_id IN (
SELECT test_id
FROM test_event
WHERE event_id=1)
有人可以告诉我这是否是编写此查询的最佳方式吗?