在使用MySQL进行搜索时,哪个查询更好?
SELECT id from table where strcol = 1
OR
SELECT id from table where strcol = '1'
strcol
是varchar(1)字段
答案 0 :(得分:1)
'1'是更好的选择,因为你的strcol有类型varchar。
答案 1 :(得分:1)
正如其他人已经说过的那样,你应该使用与列相同的数据类型。 因此,如果您有varchar,请使用引号从中进行选择,否则将使用mysql的自动类型转换。对于相对少量的数据,这种类型转换可能不是太大的问题,但是由于您不会从索引中获得任何优势,因此肯定会出现大规模的问题。
要了解mysql中的自动类型转换,请see here。
这里有趣的部分可能是:
为了比较字符串列和数字,MySQL不能使用 列上的索引可以快速查找值。如果str_col是 索引字符串列,执行时不能使用索引 在以下声明中查找...
答案 2 :(得分:0)
因为它是varchar
,所以您应该始终将其括在'
标记中 - 您现在可能只使用其中的数字(如果使用数字,它可以正常工作)但如果一封信在该列中结束,MySQL将无法将其转换为int
并抛出错误。
答案 3 :(得分:0)
根据经验,我相信在执行查询时你应该坚持数据类型,所以我建议:
SELECT id from table where strcol = '1'
纯粹因为数据类型是varchar
答案 4 :(得分:0)
因为strcol属于varchar类型,我建议:
SELECT id from table where strcol = '1'
始终用引号包装字符串
答案 5 :(得分:0)
SInce strcol
属于VARCHAR()
类型,请改用:
SELECT id from table where strcol = '1'
仅当strcol
是数字值(int,flot,number ...)时,其他选项才有效