,比如我有表和值:複雜的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」條件的任何字段。在數據集開始增長時,您不會注意到速度增加,因爲執行全表掃描的成本很低,而記錄數很少。 –