Michael J. Swart hunts for the real performance killer:
I have trouble with procedures that use
SELECT *
. They are often not “Blue-Green safe“. In other words, if a procedure has a query that usesSELECT *
then I can’t change the underlying tables can’t change without causing some tricky deployment issues. (The same is not true for ad hoc queries from the application).I also have a lot of procedures to look at (about 5000) and I’d like to find the procedures that use
SELECT *
.
I want to maybe ignoreSELECT *
when selecting from a subquery with a well-defined column list.
I also want to maybe include related queries likeOUTPUT inserted.*
.
Read on to see Michael’s strategy for attacking the problem while not including benign instances of it (such as WHERE EXISTS (SELECT * ...)
, which won’t cause any issues because the database engine doesn’t expand that wildcard).