একটি ইনডেক্স_আইডি <256000 এর কী তাত্পর্য রয়েছে?


11

একটি নির্দিষ্ট টিউটোরিয়ালে আমি পড়েছি লেখক প্রিডিকেটের sys.indexesউপর ভিত্তি করে ফিল্টারিং করছে index_id < 256000। এটি কী অর্জন করে?


2
হতে পারে তারা কোডটি অনুলিপি করেছেনsys.sysindexkeys
মার্টিন স্মিথ

1
@ মার্টিন ওহ, ইয়াক
অ্যারন বারট্র্যান্ড

1
@AaronBertrand - এবং এছাড়াও sys.selective_xml_index_paths, sys.xml_indexes, sys.sysindexesকিন্তু আমি যদি ম্যাজিক নম্বর আর বৈধতা নেই এই শুধু আপডেট করা হবে অনুমান করা।
মার্টিন স্মিথ

1
@ মার্টিন আমি এতে বাজি ধরব না। বিশেষত পশ্চাদপদ সামঞ্জস্যতা দর্শনের জন্য। মেটাডেটা কীভাবে পুনরুদ্ধার করবেন তা প্রদর্শনের কী ভয়ঙ্কর উপায় ...
অ্যারন বারট্রান্ড

উত্তর:


17

এটি এই ভ্রান্ত ধারণার উপর ভিত্তি করে তৈরি যে এক্সএমএল সূচকগুলি বর্তমানে কেবলমাত্র এক ধরণের যা কোনও আইডি স্কিম থাকতে পারে> = 256000 (কমপক্ষে তাদের পর্যবেক্ষণের ভিত্তিতে; এই স্কিমটি এএফএআইকি নথিভুক্ত নয়, তাই এটি ইচ্ছাকৃত কিনা তাও নিশ্চিত নয়)। সম্ভবত বর্তমান সংস্করণগুলিতে সূক্ষ্ম, তবে পরবর্তী ধরণের সূচি যুক্ত হবে এবং এর আইডি স্কিমটি কোথায় শুরু হবে কে জানে? আপনি যদি এক্সএমএল সূচকগুলি বাদ দিতে চান তবে আপনি এখন অন্য কিছু বাদ দিচ্ছেন। স্থানিক সূচকগুলি, উদাহরণস্বরূপ, ID = 384000 থেকে শুরু হবে বলে মনে হয় above

আরও ভাল ফিল্টার হবে:

WHERE type <> 3;

... বা আরও ভাল, যেহেতু এটি স্ব-ডকুমেন্টিং ...

WHERE type_desc <> N'XML';

এবং এখন যখন আপনি স্থানিক সূচকগুলিও বাদ দিতে চান, বলুন, আপনার ক্যোয়ারী এতে পরিবর্তন হয় ...

WHERE type_desc NOT IN (N'XML', N'SPATIAL');

... স্থানিক সূচকগুলির আইডি মানগুলি কী সংখ্যার পরিসীমাটি ধারণ করতে পারে তার পরিবর্তে (বা না) আবিষ্কার করতে পারে। সে জন্য শুভকামনা।

এগুলি sys.indexes (লেনদেন-এসকিউএল) তে খুব স্পষ্টভাবে নথিভুক্ত । আমি এই ম্যাজিক সংখ্যার কোনও উল্লেখ দেখতে পাই না এবং আমি আপনাকে এখানে আপনার টিউটোরিয়াল লেখককে নির্দেশ করার জন্য অত্যন্ত পরামর্শ দিচ্ছি যাতে তারা দেখতে পায় যে এই যাদু নম্বরটি এমন কিছু নয় যা তাদের উপর নির্ভর করা উচিত (অন্যকে নির্ভর করতে শেখাতে কোনও আপত্তি করবেন না)।


4
+1 এটি একটি ভয়াবহ খারাপ অভ্যাস। কথা ভুলে যান index_id। বিশেষত যেহেতু টাইপ নির্ধারণের জন্য আরও সঠিক ডেটা ঠিক তার পাশেই বসে আছে ... আক্ষরিক।
থমাস স্ট্রিংগার

1
এই নিয়মিততার সাথে সূচি_আইডিগুলি দেওয়ার জন্য এটি সম্ভবত এসকিউএল সার্ভারের একটি ডিজাইনের ত্রুটি। এগুলি এলোমেলো করা উচিত যাতে ভুল করে কেউ তাদের উপর নির্ভর করতে না পারে।
usr

1

ক্যালেন ডেলানির ক্রেগ ফ্রিম্যান "মাইক্রোসফ্ট এসকিউএল সার্ভার ২০১২ ইন্টারনালস" বই অনুসারে, এক্সএমএল সূচকটির সূচি_ 256000 দিয়ে শুরু হয়েছে So সুতরাং সমস্ত ধরণের সূচী তথ্য পেতে (সিজারি.ইনডেক্সগুলি অনুসন্ধান করা) তবে এক্সএমএল সূচিগুলি এড়ানো আপনি এই জাতীয় ফিল্টার রাখতে পারেন।

SELECT * FROM sys.indexes WHERE index_id <256000

Sys.indexes এর টাইপ কলামে ফিল্টার রেখে একই ফলাফল সেট অর্জন করা যায়। এক্সএমএল প্রকারের সূচকগুলির জন্য = 3।

SELECT * FROM sys.indexes WHERE type <> 3

অথবা

টাইপ_ডেস্ক কলামও ব্যবহার করা যেতে পারে।

SELECT * FROM sys.indexes WHERE type_desc <> 'XML'

1
এই দাবির জন্য আপনার কাছে কি অফিসিয়াল ডকুমেন্টেশন আছে?
21

আমার এখনই এটি আছে কোন পাতা? এছাড়াও - আমি এই লেখকদের মধ্যে হেককে সম্মান করি তবে আমি নিশ্চিত নই যে "অফিসিয়াল ডকুমেন্টেশন" হিসাবে গণনা করা।
সোয়াশেক

এটি একটি নৈমিত্তিক পর্যবেক্ষণ, যথাসময়ে ক্যালেনের নির্দিষ্ট সময়ে, এটি কোনও উদ্দেশ্যহীন ছিল যে এটি আসলে উদ্দেশ্যমূলক ছিল, ভবিষ্যতে কোনও নতুন সূচক প্রকার> 256000 হবে কিনা তা নির্ধারণ করার জন্য কোনও ভবিষ্যতের বলার ক্ষমতা বোধ করবেন না। মাইক্রোসফ্ট নির্ভর করে এমন কিছু নয় যা আপনাকে নির্ভর করতে পারে, এজন্য আপনি সরকারী নথিতে এটির কোনও রেফারেন্স পাবেন না। এবং @ সোয়াশেকের সাথে একমত, যদিও সেই বইটি অবশ্যই একটি মূল্যবান সংস্থান, এটি সরকারী নথি নয়।
অ্যারন বার্ট্র্যান্ড

3
@ সোয়াশেক প্রশ্নটি হ'ল, চিত্র 256000 কেন ব্যবহৃত হয় এবং কী নিরাপদ নয়। সেরা অনুশীলনের জন্য অবশ্যই আমি হারুনের সাথে যেতে চাই
aasim.abdullah

1
"এটি কী অর্জন করে?" প্রযুক্তিগতভাবে উত্তরটি হবে "কিছুই নয়"। সাংঘাতিকভাবে, এটি এমন একটি উপায় যা মানুষ এক্সএমএল সূচকগুলি ফিল্টারিংয়ের সাথে সম্পর্কিত করে।
সোয়াশেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.