我在一次采访中被问到这个问题,希望得到一些反馈...
我有一个存储过程,它接受一个 varchar 参数 IsActive,该参数是“YES”或“NO”字符串。
该存储过程将查询具有数据类型为 bit 的 Active 列的表。如果参数为“YES”,则它将返回 Active 列位值为 1 的所有行,否则为“NO”,它将返回 Active 列位值为 0 的所有行。
是不是最好将参数值从YES/NO转换为1/0,或者在查询时将表数据从1/0转换为YES/NO?
如果数据类型反转(传入 1/0,表中存储 YES/NO),答案是否相同?
答案1
我认为最好将参数从“YES”/“NO”转换为 1/0,以避免在数据库中存储更耗空间的 varchar。
我还认为,按位类型过滤的查询比按 varchar 过滤的查询搜索效率更高。