আমার এসকিউএল সার্ভার ২০০৮-এ নিম্নলিখিত সূচকযুক্ত সংজ্ঞাটি সংজ্ঞায়িত করা হয়েছে ( পরীক্ষার উদ্দেশ্যে আপনি জিস্ট থেকে একটি ওয়ার্কিং স্কিমা ডাউনলোড করতে পারেন ):
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
);
GO
user_id
, currency_id
এবং transaction_amount
সমস্ত NOT NULL
কলাম হিসাবে সংজ্ঞায়িত করা হয় dbo.transactions
। যাইহোক, আমি যখন ম্যানেজমেন্ট স্টুডিওর অবজেক্ট এক্সপ্লোরারে ভিউ সংজ্ঞাটি দেখি, তখন এটি ভিউটিতে উভয় balance_amount
এবং transaction_count
হিসাবে উপযুক্ত NULL
কলাম চিহ্নিত করে ।
আমি বিভিন্ন আলোচনা কটাক্ষপাত গ্রহণ করেছি, এই এক তাদের অধিকাংশই প্রাসঙ্গিক হচ্ছে, যে ফাংশন কিছু প্রকাশের shuffling সুপারিশ সাহায্য করতে পারে SQL সার্ভার স্বীকার করি যে একটি দৃশ্য কলাম সর্বদা NOT NULL
। আমার ক্ষেত্রে এ জাতীয় কোনও বদলানো সম্ভব নয়, যদিও সামগ্রিক ফাংশনগুলিতে (যেমন একটি ISNULL()
ওভার SUM()
) ইন্ডেক্সড ভিউগুলিতে অনুমোদিত নয় ।
কোনো উপায় আছে আমি সাহায্য করতে SQL সার্ভার যে চিনতে হয়
balance_amount
এবংtransaction_count
হয়NOT NULL
-able?যদি তা না হয় তবে এই কলামগুলি ভুলভাবে কার্যকর হিসাবে চিহ্নিত হওয়ার বিষয়ে আমার কি কোনও উদ্বেগ থাকতে হবে
NULL
?যে দুটি উদ্বেগ আমি ভাবতে পারি তা হ'ল:
- ব্যালান্স ভিউতে ম্যাপযুক্ত কোনও অ্যাপ্লিকেশন অবজেক্ট একটি ভারসাম্যের একটি ভুল সংজ্ঞা পাচ্ছে।
- খুব সীমাবদ্ধ ক্ষেত্রে, ক্যোরি অপটিমাইজারের কাছে নির্দিষ্ট কিছু অপ্টিমাইজেশন উপলব্ধ নয় কারণ এই দুটি কলামের দৃষ্টিভঙ্গির কোনও গ্যারান্টি নেই
NOT NULL
।
এই উদ্বেগগুলির মধ্যে একটিই কি বড় কথা? আমার মনে রাখা উচিত অন্য কোন উদ্বেগ আছে?