If I know that the value of a column should always be in teh range allowed by the smallint data type, from a data integrity maintenance point of view, it would seem to behoove me to store the data in a smallint column rather than an int column.
However I am wondering whether there are any performance hits that may be paid by using less bytes?
Smaller types = less storage on disk, which leads to more efficient indexes. However, those performance gains will be minimal unless dealing with a large volume of data; furthermore, in order to avoid implicit conversions (which may offset any performance gains you see), you’ll need to be sure that any time you reference that column that you use the correct type (including comparisons to parameters, etc).
Probably a wash either way.