我正在使用 mysql 数据库。 我的网站被切割成不同的元素(项目 12 的 PRJ_12、任务 14 的 TSK_14、文档 18 的 DOC_18 等)。我们目前将对这些元素的引用作为 VARCHAR 存储在我们的数据库中。关系列已编入索引,因此可以更快地进行选择。
我们正在考虑将这些列分为 2 列(在“element_type”列上有 PRJ,一个“element_id”列上有 12)。我们正在考虑这个解决方案,因为我们做了很多包含 LIKE ...% 的请求(例如检索一个用户的所有任务,无论任务的 ID 是什么)。 但是,将这些列一分为二会增加索引列的数量。
所以,我有两个问题:
- 索引列中的
LIKE ...%
请求是否真的比简单的 where 查询(没有 like)慢。我知道如果该列未编入索引,则不建议执行where ... LIKE %
请求,但我真的不知道索引是如何工作的)。 - 我们将引用列一分为二的事实将使索引表的数量加倍。这是个问题吗?
谢谢,
最佳答案
1) 点赞总是比完全比较(使用 = )成本更高,但是这一切都归结为字段数据类型和记录数(除非我们谈论的是您不应该拥有的巨大表格问题)
2) 多列索引不是问题,是的,它会使索引变大,但那又怎样?数据类型和总行数很重要,但这正是索引的作用。
那就去吧
关于mysql - sql 查询 LIKE % on Index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14755948/