• The dbo prefixing thing seemed to be a problem after changeover from SQL 2000 to SQL 2005, though what it was, I've forgotten.

    I've always thought it is generally good practise to prefix tables with the schema, and can remember companies that insisted all stored procedures were gone through to make sure all tables were prefixed with 'dbo.'

    But if you haven't upgraded from SQL2000 - then on 2005 or 2008, if the users in question have a different default schemas, then yes, Id' guess they would generate different plans, however usually the default schema is dbo - so if all users have the default schema it would not matter.

    Not sure I want to do this myself, but if you create two users in your northwind DB, make sure they have the same default schema, then execute the same statement without the dbo. a few times for each user, looking at the results of this query, to see what plans get cached.

    SELECT TOP 10

    plan_handle, sql_handle,

    ObjectName = OBJECT_SCHEMA_NAME(qt.objectid,dbid) + '.' + OBJECT_NAME(qt.objectid, qt.dbid)

    ,TextData = qt.text

    ,DateCached = qs.creation_time

    ,LastExecutionTime = qs.last_execution_time

    FROM sys.dm_exec_query_stats AS qs

    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt

    WHERE qt.text like '%Customers%' -- or something in your query

    ORDER BY plan_handle;

    I would guess you would see the plan reused.

    Then create another user with a different schema, and see if when that user executes the query you get a new plan created.

    I think you would see a different plan. But I'll leave this up to someone else to test out and confirm/refute.