快速搜索巨大的mysql数据库

Mat*_*eau 2 mysql database optimization performance

我需要索引一个庞大的mysql数据库(5亿条记录).我很少创建,更新或删除

只有一些请求像SELECT*FROM tbl_person WHERE name LIKE'foo%'

我已经在字段上设置了我的索引.

一个会更好地在读取请求上获得最佳性能

5个记录表上的1个单一请求或5亿个记录表上的10个请求,之后加入结果.

小智 8

你可以做很多事情.首先,如果您经常按人名搜索,请考虑按人名的前几个或前几个字母对表进行分区.请参阅分区类型.

例如,由于整数搜索速度要快得多,因此您可以创建一个名为name_abbr的字段,该字段是一个smallint,表示人名的前2或3个字母.您将对此字段进行索引和分区!所以,aaa将是1,aab将是2,依此类推.您的查询看起来像这样:

SELECT * FROM Table WHERE name_abbr=123 AND name LIKE 'foo%';
Run Code Online (Sandbox Code Playgroud)

现在,这将打到正确的分区,LIKE只需要检查一个小得多的记录集.

您还可以执行许多其他操作,但请记住,对于大型数据集,最好将数据分解为组,并始终尽可能使用整数进行查询.此外,请确保使用EXPLAIN关键字以确保您的查询正在使用您希望它们使用的索引和分区.