我需要将未知数据类型保存到字段中。因此我必须使用varchar而不是整数(因为数据也可以是字符串)
id, filter1, filter2
1, male, 24
2, female, 53
在这种情况下,filter1是性别,filter2是年龄。如果我查询,是否会对性能产生重大影响:
SELECT * FROM tbl WHERE filter2 > 30
与使用整数相比?
答案 0 :(得分:1)
如果你写:
where filter > 30
然后MySQL会做你想做的事 - 但你可能会得到奇怪的结果。如果您的列的值为'44x'
,则过滤器也会选择它。为什么?因为MySQL会将filter
转换为字符串。此外,类型转换通常会排除使用索引。
如果您使用字符串:
where filter > '30'
然后你没有字符串转换问题,但你会得到所有以字母开头的字符串。
换句话说,不要混合这样的类型。值应存储在其本机类型中。您应该重新访问您的数据模型 - 您可能想要一个名为age
的列(或者更好的是,出生日期)。