mysql搜索查询哪一个更好

时间:2014-04-23 08:55:40

标签: php mysql

在使用MySQL进行搜索时,哪个查询更好?

SELECT id from table where strcol = 1

OR

SELECT id from table where strcol = '1'

strcol是varchar(1)字段

6 个答案:

答案 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 ...)时,其他选项才有效