gpt4 book ai didi

mysql - 使用 LIKE 进行搜索的大型 MySQL 表的分区

转载 作者:可可西里 更新时间:2023-11-01 08:36:46 25 4
gpt4 key购买 nike

我有一个包含 8000 万条记录的表。表的结构:

  • id - 自动递增,
  • 代码 - 5 到 100 个字符的字母数字代码,
  • 其他领域。

最常用的查询是

SELECT * FROM table
WHERE code LIKE '%{user-defined-value}%'

查询的数量和记录数都在增长。很快我就会遇到性能问题。

有什么办法可以把表格分成几部分?或者也许还有其他一些优化表格的方法?

最佳答案

搜索中领先的 % 是这里的 killer 。它否定了任何索引的使用。

我唯一能想到的就是根据代码长度对表进行分区。

例如,如果输入的代码是 10 个字符长,则先搜索 10 个字符代码的表,不带前导百分号,然后搜索 11 个字符代码的表,带前导百分号,然后包含 12 个字符代码的表格,带有前导百分号等。

这使您无需搜索所有长度少于 10 个字符且永远不会匹配的代码。此外,您还可以为其中一个搜索(第一个)使用索引。

这也将有助于使表格尺寸保持较小。

您可以使用 UNION 一次执行所有查询,但您可能希望动态创建查询。

你也应该看看FULLTEXT索引可能是更好的解决方案。

关于mysql - 使用 LIKE 进行搜索的大型 MySQL 表的分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9859444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com