ฉันมีมุมมองการจัดทำดัชนีต่อไปนี้กำหนดไว้ใน SQL Server 2008 (คุณสามารถดาวน์โหลด schema การทำงานจากส่วนสำคัญสำหรับการทดสอบ):
CREATE VIEW dbo.balances
WITH SCHEMABINDING
AS
SELECT
      user_id
    , currency_id
    , SUM(transaction_amount)   AS balance_amount
    , COUNT_BIG(*)              AS transaction_count
FROM dbo.transactions
GROUP BY
      user_id
    , currency_id
;
GO
CREATE UNIQUE CLUSTERED INDEX UQ_balances_user_id_currency_id
ON dbo.balances (
      user_id
    , currency_id
);
GOuser_id, currency_idและtransaction_amountมีการกำหนดไว้ทั้งหมดเป็นคอลัมน์ในNOT NULL dbo.transactionsอย่างไรก็ตามเมื่อฉันดูคำจำกัดความของมุมมองใน Object Explorer ของ Management Studio มันจะทำเครื่องหมายคอลัมน์ทั้งสองbalance_amountและtransaction_countเป็นNULL-able ในมุมมอง
ฉันเอาดูที่การอภิปรายหลาย, คนนี้เป็นที่เกี่ยวข้องมากที่สุดของพวกเขาที่แนะนำสับของฟังก์ชั่นบางอย่างอาจช่วย SQL Server NOT NULLยอมรับว่าคอลัมน์มุมมองอยู่เสมอ ในกรณีของฉันไม่สามารถสับแบบนี้ได้เนื่องจากไม่อนุญาตให้มีการแสดงออกในฟังก์ชั่นรวม (เช่นISNULL()over the SUM()) ในมุมมองที่จัดทำดัชนี
- มีวิธีที่ฉันสามารถช่วย SQL Server ตระหนักดีว่า - balance_amountและ- transaction_countมีความ- NOT NULLน่า?
- หากไม่มีฉันควรมีข้อกังวลใด ๆ เกี่ยวกับคอลัมน์เหล่านี้ที่ถูกระบุว่าผิด - NULL- ใช้ได้หรือไม่- สองข้อกังวลที่ฉันคิดได้คือ: - แอปพลิเคชันวัตถุใด ๆ ที่แมปกับมุมมองยอดดุลจะได้รับการกำหนดที่ไม่ถูกต้องของยอดดุล
- ในกรณีที่มีข้อ จำกัด อย่างมากการปรับให้เหมาะสมบางอย่างจะไม่สามารถใช้ได้กับ Query Optimizer เนื่องจากไม่มีการรับประกันจากมุมมองที่เป็นสองคอลัมน์NOT NULLนี้
 - สิ่งเหล่านี้เกี่ยวข้องกับเรื่องใหญ่หรือไม่? มีข้อกังวลอื่น ๆ ที่ฉันควรทราบหรือไม่ 
