Nao*_*aor 5 sql t-sql sql-server sql-server-2005
我在某处读过,可以选择在主键创建的树叶上存储其他数据.例如,如果我有一个包含列的表:row_id,customer_id,我需要显示customer_name,我可以在table和customers表之间进行连接.但我也可以使用customers表的主键(带有customer_id)存储customer_name,并且sql引擎不必加载整行客户以便获取客户名称.
有人能描述得更好吗?我该如何实现呢?
对于SQL Server 2005+,听起来好像是在讨论包含列,但只有在所有列都在一个表中时才有效.
CREATE INDEX IX_Customers_RowCust
ON Customers (customer_id)
INCLUDE (customer_name);
Run Code Online (Sandbox Code Playgroud)
但是,我认为您描述的情况是(row_id,customer_id)在一个表中,而customer_name在第二个表中.对于这种情况,您需要创建索引视图.
CREATE VIEW vwCust WITH SCHEMABINDING AS
SELECT t.row_id, t.customer_id, c.customer_name
FROM SomeTable t
INNER JOIN Customers c
ON t.customer_id = c.customer_id
GO
CREATE UNIQUE CLUSTERED INDEX vwCustRow ON vwCust (row_id)
GO
Run Code Online (Sandbox Code Playgroud)