I have two databases with the same data, one on an SQL Server 2008 R2 instance, and one on an SQL Server 2016 instance. Both SQL Server instances are on the same machine, and the database files are on the same disk. The SQL Server 2016 has Legacy Cardinality Estimation = ON. Both instances and databases have Max DOP=1. With the SQLQueryStress tool, I run a stored procedure 100 times on the SQL Server 2008 R2 instance and then on the SQL Server 2016 instance. The total time on the SQL Server 2008 R2 is 1,83 sec whereas the total time on the SQL Server 2016 is 2,16 sec. The execution plans are exactly the same, why is SQL Server 2016 slower?
The Results in the SQLQueryStress:
The execution plan of the stored procedure on the SQL Server 2008 R2 database:
The execution plan of the stored procedure on the SQL Server 2016 database: