我应该如何在一个非常大的表格中使用索引

时间:2018-03-13 22:19:05

标签: mysql indexing scalability

我们说我有下表,可以包含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。

2 个答案:

答案 0 :(得分:2)

weekcontent列上使用多列索引:

ALTER TABLE yourTable ADD INDEX (week, content);

如果您在其中间搜索文本,则字符串列上的索引将无济于事。但它会对精确匹配和前缀匹配有所帮助,如果您执行content = 'word'content LIKE 'word%'会有用。

答案 1 :(得分:1)

切换到FULLTEXT上的content索引。