I have the following tables:
Customers
ID     Name 
============
1      John 
2      Alice
3      Bob
Orders
ID     CustomerID   Status
==========================
1001       1          1
1002       2          1
1003       2          2
1004       3          2
I'd like to join tables showing one entry per customer only (the one with lowest Status) i.e.
ID     Name    OrderID 
======================
1      John     1001
2      Alice    1002
3      Bob      1004
Thanks to the answer to this question, I chose 2 solutions which produce the same output:
Solution 1
SELECT c.id, c.name, o.id FROM customers AS c
INNER JOIN orders AS o ON
c.id =  o.customerid
WHERE o.status = (SELECT MIN(status) FROM orders WHERE customerid = c.id)
Solution 2
SELECT c.id, c.name, o.id FROM customers as c
INNER JOIN orders AS o ON
o.id = (SELECT TOP 1 id FROM orders WHERE customerid = c.id ORDER BY status)
Trying to understand which one runs faster, I used SQL Fiddle View Execution Plan which gave the following:
Solution 1
Solution 2
How to interpret those diagrams and which one performs faster? Using MS SQL Server 2016.


 
     
    