,比如我有表和值:复杂的mysql选择查询7
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是字
st_id的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列添加索引这个查询会更快是吗?
什么类型的指数会好?
是的,你应该添加索引到你正在使用你的“WHERE”条件的任何字段。在数据集开始增长时,您不会注意到速度增加,因为执行全表扫描的成本很低,而记录数很少。 –