我正在使用mysql数据库。 我的网站被分成不同的元素(PRJ_12为12,12为TSK_14,18为DOC_18,等等)。我们当前将这些元素的引用作为VARCHAR存储在我们的数据库中。关系列是索引的,因此选择速度更快。SQL查询LIKE%在索引
我们正在考虑在2列中列出这些列(PRJ列上的“element_type”列和12列中的一个“element_id”列)。我们正在考虑这个解决方案,因为我们做了很多包含LIKE ...%的请求(例如,检索一个用户的所有任务,而不管任务的ID)。 但是,将这些列拆分为2会增加索引列的数量。
所以,我有两个问题:
- 是在索引列
LIKE ...%
要求真的不是一个简单的更慢,其中查询(不喜欢)。我知道如果该列没有编入索引,建议不要求where ... LIKE %
请求,但我并不真正了解索引如何工作)。 - 我们将参考列分成两部分的事实将使索引表的数量加倍。那是问题吗?
感谢,
索引是有组织的数据结构。当你做一个查询,如'WHERE field_name LIKE'term%''(注意通配符在搜索词的末尾),那么MySQL可以使用索引,因为field_name被索引。它会很快,取决于您有多少记录以及计算机可以提供哪些资源。如果MySQL使用索引,由于索引的组织结构,它通常比检查实际数据快得多。 –