sql – 对于char / varchar / text列,为什么该列的索引会使搜索
假如它是一个int,我知道它会更快,只是无法领略字符串范例. 条记:
没有任何正常的索引将有助于该查询.它永久注定要慢. LIKE表达式不是sargable. 为什么?起首必要相识索引的事变道理.它们根基大将被索引的列与主键(记录指针)一路放入新表中.然后,他们在索引列而不是键上对该表举办排序.当您行使索引举办查找时,它可以很是快速地找到您想要的行,由于该索引已颠末排序,以便行使二进制搜刮等算法举办更有用的搜刮. 此刻再看一下该查询.通过在搜刮文本前面安排一个通配符,您方才汇报数据库您不确定列的起始位置.没有几多分类会有所辅佐;你如故必要遍历整个表格,以确保找到与表达式匹配的每笔记录.这意味着该列的任何正常索引对付此查询都毫无代价. 假如要在列中的任何位置搜刮文本列以查找搜刮字符串,则必要行使轻微差异的内容:全文索引. 此刻举办比拟看看这个查询:
这对付平凡索引完全正常,由于您知道您但愿列怎样开始.它如故可以与存储在索引中的排序值匹配,因此我们可以说它是可以搜刮的. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |