I have a table that I would like to unpivot in a SQL statement. It consists of a person and phone 1 through 5. Right now I'm doing a union for each phone but I fear it is causing performance issues.
Columns:
PERSON_GUID,
PHONE_1, PHONE_1_VOICE_FLG,
PHONE_2, PHONE_2_VOICE_FLG,
PHONE_3, PHONE_3_VOICE_FLG,
PHONE_4, PHONE_4_VOICE_FLG,
PHONE_5, PHONE_5_VOICE_FLG
How would I best unpivot the row with performance in mind so that the results are:
PERSON_GUID, PHONE_NO, VOICE_FLG
I prefer
UNPIVOT
but as for your solution -Make sure you are using
UNION ALL
and notUNION
.UNION ALL
just spills one query result after the other.UNION
eliminates rows duplications and this is where you pay in performance.