SQL Server Index Scan Actual Executions
Schema and indexes are only one aspect of query plan and performance.  Your statement "but with different data" is likely the source of the difference. The number of rows and the distribution of data is essential to the query optimizer.  If you have significantly more rows in D2, or if the data is of entirely different characteristics (wider or narrower range of values), then you should expect to see different performance and execution plans.

For each set of statistics, SQL Server keeps a maximum of 200 samples. As the rows in the tables grow and the more irregular the distribution of values the more likely it is that SQL Server will not have enough information to generate optimal execution plans.  That's where the use of filtered indexes and statistics comes into play.  

If this is a parameterized query you may also be running into a parameter sniffing problem.  Note that if you're using local variables the calculation changes also.