这说明你需要在每一步查询,以便您可以构建它,它在存储过程中自动表:
--Look for foreign keys on TABLE
SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS -- query 1
WHERE constraint_type='FOREIGN KEY'
AND TABLE_NAME='Some_table'
SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE -- query 2
WHERE constraint_name='Constraint_name_from_query_1'
--Iterate through each foreign key and find it's primary key counterpart (other_table)
SELECT UNIQUE_CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS -- query 3
WHERE constraint_name='Constraint_name_from_query_1'
SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE -- query 4
WHERE constraint_name='Unique_constraint_from_query_3'
-- Some_Table left join other_table on Some_Table.FK = other_table.PK
select * from table_name_from_query_2 LEFT JOIN table_name_from_query_4 ON column_name_from_query_2 = column_name_from_query_4
注意创造一个PK,默认情况下,创建了一个聚集索引,而改善了在PK中找到匹配(比方说在父表中)。但是在MS SQL中创建FK不会。所以FK列(比方说在子表中)没有索引。要解决运行缓慢的查询,您必须检查实际执行计划 – jean