我有一个在工作中经常出现的案例。我有很多表使用 4 个字符串作为外键:G191
TheG
是一种类别,the19
是年份,the1
是一个实例。获取类别的所有行G
是我们经常做的事情。通常喜欢:
SELECT * FROM [Table]
WHERE Left([ID], 1) = 'G'
Run Code Online (Sandbox Code Playgroud)
有一种方法可以在不操作字符串的情况下获得这种效果,方法是加入定义了该类别的表:
SELECT * FROM [Table]
JOIN [Categories] ON [Table].CategoryID = [Categories].CategoryID
WHERE [Categories].Letter = 'G'
Run Code Online (Sandbox Code Playgroud)
我的同事坚持认为第一种方法的性能更高,并且因为我采用第二种方法而对我翻白眼。
哪一个更好?通过另一个表加入是否真的比检查字符串的第一个字符增加了更多的工作?