I am creating a table that is used in a warehouse for reporting. The queries that create the table end up joining about 30 tables and creating 1.5 million records. It takes about 1.45 hours to run. Then the indexes built on it take .5 hours to run. The tables are all indexed on what they are joined on and there is no where clause. This query runs every night but is a problem because it takes so long. If I try to run the query for only those records that changed I would have to check 30 different tables for changes. Does anyone have any ideas on how I could make this more efficient?