এসকিউএল-সার্ভারে গণিত কলামগুলির সাথে অদ্ভুত আচরণ


12

আমার -4০-৪৩33 পরীক্ষার বইটি পড়ার সময় আমি এমন কিছু নিয়ে ভাবছিলাম যা আমি কাজ করতে দেখছি না, তবুও আমি বিশ্বাস করি এটি তা করে। প্যাসেজ কিছু পড়তে:

কলামটি অবশ্যই PERSIDED হিসাবে চিহ্নিত করা আবশ্যক , যার অর্থ এসকিউএল সার্ভার শারীরিকভাবে গণনা করা কলামের অভিব্যক্তিটির ফলাফলটি যখনই কোনও প্রশ্নের সাথে উল্লেখ করা হয়েছে ততবার তা গণনার পরিবর্তে ডেটা সারিটিতে সঞ্চয় করে।

এ থেকে আমি দুটি জিনিস বুঝতে পারি:

  1. একটি অ-স্থিত গণিত কলামটি প্রতি বার গণনা করা হয় যে এটি কোনও প্রশ্নের সাথে উল্লেখ করা হয়েছে
  2. গণিত কলামের জন্য কিছুই সংরক্ষণ করা হয়নি বলে, আমি ধরে নিই কলামের জন্য কোনও সূচক তৈরি করা যাবে না।

এটি পড়ার পরে, আমি ভেবেছিলাম যে এটি কিছুটা অদ্ভুত ছিল কারণ আমি পূর্ববর্তী প্রকল্পের অ-স্থায়ী কলামে একটি সূচক তৈরি করতে সক্ষম হয়েছি।

স্থিতিশীল নয় এমন কিছুর জন্য কীভাবে একটি সূচক তৈরি করা যেতে পারে এবং এটি কি দীর্ঘমেয়াদে ক্ষতিকারক?


এটি প্রমাণ করতে আমি নিম্নলিখিত এসকিউএল স্টেটমেন্টটি চালিয়েছি:

CREATE TABLE testTable
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    telephone VARCHAR(14),
    c_areaCode AS (SUBSTRING(telephone,0,5)),
    cp_areaCode AS (SUBSTRING(telephone,0,5)) PERSISTED
)

INSERT INTO testTable VALUES('09823 000000');
INSERT INTO testTable VALUES('09824 000000');
INSERT INTO testTable VALUES('09825 000000');

CREATE NONCLUSTERED INDEX IX_NotPersisted ON testTable(c_areaCode);
CREATE NONCLUSTERED INDEX IX_Persisted ON testTable(cp_areaCode);

এবং তারপরে নিম্নলিখিত কোয়েরিগুলি চালান:

DBCC FREEPROCCACHE
DBCC FREESYSTEMCACHE('ALL');
DBCC DROPCLEANBUFFERS
GO
SELECT cp_areaCode FROM testTable;
GO
SELECT c_areaCode FROM testTable;

উপরের কোডটির জন্য ক্যোয়ারী পরিকল্পনার দিকে নজর রেখে আমি দেখতে পাচ্ছি যে দুটি নির্বাচিত অনুসন্ধানগুলি অ-স্থির সূচকটি ব্যবহার করছে। আবার, কীভাবে?

এখানে চিত্র বর্ণনা লিখুন


যাদের কাছে -4০-৪৩ book বই রয়েছে তাদের জন্য উদ্ধৃত পাঠ্য ১১১ পৃষ্ঠার শীর্ষে রয়েছে।
স্টুয়ার্ট ব্ল্যাকার

উত্তর:


9

২. কারণ গণিত কলামের জন্য কিছুই সংরক্ষণ করা হয়নি, আমি ধরে নিই কলামের জন্য কোনও সূচক তৈরি করা যায় না।

এই অনুমানটি সত্য নয় - উভয় প্রকারকেই সূচকযুক্ত করা যেতে পারে । গণিত কলামটি অবশ্যই উভয় ক্ষেত্রে নিয়ন্ত্রক হতে হবে তবে যখন গণিত কলামটি স্থির থাকে, তখন গণনাটিও সুনির্দিষ্টভাবে প্রয়োজন হয় তা শিথিল করা হয় (অর্থাত্ এটি ভাসমান পয়েন্ট অপারেশনগুলিতে জড়িত থাকতে পারে)।

স্থিতিশীল নয় এমন কিছুর জন্য কীভাবে একটি সূচক তৈরি করা যেতে পারে এবং এটি কি দীর্ঘমেয়াদে ক্ষতিকারক?

ফাংশনটির ফলাফল উভয় ক্ষেত্রেই সূচকে 'অবিচলিত' - কেবলমাত্র পার্থক্যটি এটি সারণীতে স্থির থাকে কিনা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.