Demystification of SQL Server optimization process
I will try to reply to your questions:
1. It seems that the MEMO structure contains only final variants of the query plan or variants that were later rewritten into the final one. Is there a way to find &quot;unsuccessful/unpromising&quot; query plans?
No, sadly there is no way to do that. @Ronaldo pasted a nice link in the comment. My suggestion is to use the Include Live Query Statistics

and try to find out if you see different query plan. Use top 10, top 1000, or * and you will see that different query plans will be proposed. You can also use query hint and force your query plan to a different pattern. Basically &quot;do your own discarded query plan&quot;
2. The operators in MEMO do not contain a reference to SQL parts. For example, LogOp_Get operator does not contain a reference to a specific Table.
Use QUERYTRACEON 8605, I can see a reference to the table:

3. The transformation rules do not contain a precise reference to MEMO operators, therefore, we can not be sure which operators were transformed by the transformation rule
I don't see any GetToIdxScan - Get -&gt; IdxScan in the query you provided. My suggestion is to use Use QUERYTRACEON 8605, or QUERYTRACEON 8606, there should be a reference there.
EDIT:
So &quot;... is it possible to see more information about the candidate plans in SQL Server.&quot;
The reply is no, because there are no other candidate query plan. In fact, is a common misconception that SQL Server returns you The Best query plan. SQL Server simply cannot calculate for you all possible solutions: that would take... I don't know... minutes...? hours...? Calculating every single solution is unfeasible.
But if you want to investigate why your query plan choose that pattern you can use:

SET SHOWPLAN_ALL ON : and SQL Server will return you a tree of the logic of every single calculation of your query plan



DBCC SHOW_STATISTICS('A', 'PK_A') : which will show you the statistics about a target table and constraint. I created a key to show you the results, naturally you will see more info if your table is queried more often



USE HINT('force_legacy_cardinality_estimation') : will allow you to use the former cardinality estimation, so you can check if you query plan might have been faster with the legacy cardinality estimation .