mysql - sql 查询 LIKE % on Index

标签 mysql sql

我正在使用 mysql 数据库。 我的网站被切割成不同的元素(项目 12 的 PRJ_12、任务 14 的 TSK_14、文档 18 的 DOC_18 等)。我们目前将对这些元素的引用作为 VARCHAR 存储在我们的数据库中。关系列已编入索引,因此可以更快地进行选择。

我们正在考虑将这些列分为 2 列(在“element_type”列上有 PRJ,一个“element_id”列上有 12)。我们正在考虑这个解决方案,因为我们做了很多包含 LIKE ...% 的请求(例如检索一个用户的所有任务,无论任务的 ID 是什么)。 但是,将这些列一分为二会增加索引列的数量。

所以,我有两个问题:

  1. 索引列中的 LIKE ...% 请求是否真的比简单的 where 查询(没有 like)慢。我知道如果该列未编入索引,则不建议执行 where ... LIKE % 请求,但我真的不知道索引是如何工作的)。
  2. 我们将引用列一分为二的事实将使索引表的数量加倍。这是个问题吗?

谢谢,

最佳答案

1) 点赞总是比完全比较(使用 = )成本更高,但是这一切都归结为字段数据类型和记录数(除非我们谈论的是您不应该拥有的巨大表格问题)

2) 多列索引不是问题,是的,它会使索引变大,但那又怎样?数据类型和总行数很重要,但这正是索引的作用。

那就去吧

关于mysql - sql 查询 LIKE % on Index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14755948/

相关文章:

mysql - 无法在本地开发服务器上通过 Angular 2 中的 HTTP POST 发布数据

mysql - 使用的表类型不支持子查询上的 FULLTEXT 索引

sql - 协调 protobuf-net bcl.Guid 的 HI/LO 与 sql uniqueidentifiers 以进行相关子查询?

sql - 查找并生成某个范围日期的值

mysql - 如何优化导致性能非常低的连接

php - 当您只插入几行时,MySQL 中的单个多个 INSERT 是否会在速度上产生很大差异?

mysql - 如何编写一对一映射的 SQL 查询

mysql - 基于日期的最后连续插入记录的计数

mysql - 如何在两个表上执行 MYSQL 连接,其中第二个表的外键值的条件也可以为空

SQL 表的最大行数