【发布时间】:2018-08-22 08:00:28
【问题描述】:
假设我有下表,它可以包含 100M + 行。
表格示例
id user_id week content created
========================================================================
1 100022312 1 <data to be searched> <timestamp>
2 102232123 1 <data to be searched> <timestamp>
...
10.000.000 126387126 1 <data to be searched> <timestamp>
10.000.001 100022312 2 <data to be searched> <timestamp>
10.000.002 102232123 2 <data to be searched> <timestamp>
...
20.000.000 126387126 2 <data to be searched> <timestamp>
....
第 3、4、5、6 周.....
我会这样查询表:
SELECT * FROM table WHERE week='2' AND content LIKE %word%
我的问题:
我可以使用索引来使这个查询运行得更快吗?怎么样?
有没有办法索引一行?我的意思是,我想为每周的第一行建立索引,以便下次选择时,它首先查看索引,匹配周数,然后在该批次中搜索。这意味着nr indexes == nr weeks。
数据插入无关紧要。我也不需要任何排序。
我正在使用 MyISAM。
【问题讨论】:
-
索引无法帮助
LIKE '%word%'。 -
但您当然可以在
week上添加索引,这会有所帮助。 -
好吧,假设我有
cotent='word'而不是LIKE %word%。你能告诉我如何添加索引吗?另外,您是否阅读了我的完整问题?我可以添加多少周(以及每周的第一行)的索引吗?
标签: mysql indexing scalability