Data in two databases, eager spool resulting in query

Posted by Valkyrie on Stack Overflow See other posts from Stack Overflow or by Valkyrie
Published on 2010-03-31T15:54:05Z Indexed on 2010/03/31 16:53 UTC
Read the original article Hit count: 457

I have two databases in SQL2k5: one that holds a large amount of static data (SQL Database 1) (never updated but frequently inserted into) and one that holds relational data (SQL Database 2) related to the static data. They're separated mainly because of corporate guidelines and business requirements: assume for the following problem that combining them is not practical.

There are places in SQLDB2 that PKs in SQLDB1 are referenced; triggers control the referential integrity, since cross-database relationships are troublesome in SQL Server. BUT, because of the large amount of data in SQLDB1, I'm getting eager spools on queries that join from the Id in SQLDB2 that references the data in SQLDB1. (With me so far? Maybe an example will help:)

SELECT t.Id, t.Name, t2.Company 
FROM SQLDB1.table t INNER JOIN SQLDB2.table t2 ON t.Id = t2.FKId

This query results in a eager spool that's 84% of the load of the query; the table in SQLDB1 has 35M rows, so it's completely choking this query. I can't create a view on the table in SQLDB1 and use that as my FK/index; it doesn't want me to create a constraint based on a view.

Anyone have any idea how I can fix this huge bottleneck? (Short of putting the static data in the first db: believe me, I've argued that one until I'm blue in the face to no avail.)

Thanks!

valkyrie

Edit: also can't create an indexed view because you can't put schemabinding on a view that references a table outside the database where the view resides. Dang it.

© Stack Overflow or respective owner

Related posts about sql-server-2005

Related posts about query