例如我有表和值:
CREATE TABLE IF NOT EXISTS `words` (
`wd_id` int(11) NOT NULL,
`st_id` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
----------------------------
| wd_id | st_id |
----------------------------
| 2 | 4 |
----------------------------
| 5 | 4 |
----------------------------
| 7 | 8 |
----------------------------
| 2 | 8 |
----------------------------
| 7 | 9 |
----------------------------
| 2 | 10 |
----------------------------
| 5 | 10 |
----------------------------
wd_id 是单词
的 id st_id 是句子的 id
如果我知道两个词的 id。我想得到有这个词的句子列表。例如,这个 id 是 2 和 5,那么 ANSWER 将是 4 和 10。
在此表中将有数百万行。所以我需要仔细写查询!!!
这是我写的查询:
SELECT st_id
FROM words
WHERE wd_id = 5 AND st_id IN (
SELECT st_id
FROM words
WHERE wd_id = 2
)
有人能写出更好的查询吗?或查询哪个适用于 N 个单词?
如果我为 wd_id 和 st_id 列添加索引,这个查询会更快吗?
什么类型的指数是好的?