I'm investigating some issues with parameterization for our app, which uses Sql Azure. I'm using the query store and analyzing the following 2 queries, which are similar.
See following image:
Our application doesn't actually parameterize this query.
Both the ShopId and order_id parameters are actually inlined by our app. Even more strange, the query that we sent doesn't send
[order_id] = <id>. Instead it sends
[order_id] IN (<list of ids>).
Often, there will be a single id in the list.
1) I understand that Sql Azure can automatically parameterize. However, the second query shows a
None. Yet, the query_sql_text shows that the query was auto parameterized. Why is that?
2) My understanding was that the
query_sql_text was the text provided by the user (our app). However, it seems to actually be the text computed by Sql Azure once it's done its auto-parameterization, and also realized it could replaced the
IN clause with an
= since there was a single value in the
IN. Is that right?
3) Both queries have different
query_text_id but the
query_sql_text is exactly the same. Why is that? Also, why is the statement_sql_handle is different? I get the feeling that maybe the handle is based on the raw text of the query, before SQL azure made transformed it into its canonical text. But I also did read that the text stored is supposed to be the raw text so I'm quite confused.
Can anyone shed some light?