我想知道在索引varchar字段下的两个以下操作中的哪一个更有效(它们在我更难查询中扮演替代方案):
length(field) == 5
或
field == "12345"
首先,对我来说很明显第一个条款如果更快。但是,由于字段被索引,比较相当快。但长度呢?我猜索引不存储有关字符串长度的信息...
答案 0 :(得分:2)
第二个在索引varchar字段中效率更高。具体而言,限制标准(精确匹配)比长度限制更具限制性;更大的限制加速了选择。
答案 1 :(得分:0)
无论如何,长度比较更好。即使以任何方式对字符串进行散列和索引,它们的比较也不会比简单的整数比较更快。即使没有存储长度(但我不相信),用于长度计算的空循环while(s[i] != '\0');
将比char-by-char循环somparison更快。