mysql性能<,> for varchar vs integer

时间:2017-09-14 11:53:41

标签: mysql sql

我需要将未知数据类型保存到字段中。因此我必须使用varchar而不是整数(因为数据也可以是字符串)

id, filter1, filter2
1, male, 24
2, female, 53

在这种情况下,filter1是性别,filter2是年龄。如果我查询,是否会对性能产生重大影响:

SELECT * FROM tbl WHERE filter2 > 30

与使用整数相比?

1 个答案:

答案 0 :(得分:1)

如果你写:

where filter > 30

然后MySQL会做你想做的事 - 但你可能会得到奇怪的结果。如果您的列的值为'44x',则过滤器也会选择它。为什么?因为MySQL会将filter转换为字符串。此外,类型转换通常会排除使用索引。

如果您使用字符串:

where filter > '30'

然后你没有字符串转换问题,但你会得到所有以字母开头的字符串。

换句话说,不要混合这样的类型。值应存储在其本机类型中。您应该重新访问您的数据模型 - 您可能想要一个名为age的列(或者更好的是,出生日期)。