আরও কঠোর তুলনা (অর্থাত্ ভার্চর) চালানোর আগে কোন প্রশ্নটি আরও সহজ তুলনা (যেমন বিট) পরীক্ষা করবে?


12

যদি আমি একটি ক্যোয়ারী লিখি যার মধ্যে একটি যৌগিক WHEREধারা রয়েছে, যেমন:

SELECT *
FROM MyTable
WHERE BitField = 1
    AND VarcharField = 'asdf'

এবং সেই bitতুলনার অন্তর্ভুক্তি কেবল তুলনাকে বাদ দেবে একই ক্ষেত্রগুলিকে varcharবাদ দেয়, সেই bitক্ষেত্রের তুলনার উপস্থিতি আমাকে কার্য সম্পাদনের উন্নতি দেবে?

উত্তর:


22

এটি সনাক্ত করা গুরুত্বপূর্ণ যে এসকিউএল একটি ঘোষণামূলক ভাষা। SELECTক্যোয়ারী আপনি নির্দিষ্ট করে লিখেছিলেন যৌক্তিক ফলাফল ফিরিয়ে দিতে হবে। এই ফলাফলগুলি ফেরত দেওয়ার জন্য একটি দক্ষ শারীরিক কৌশল নির্ধারণ করার জন্য এটি ডাটাবেস ইঞ্জিন, বিশেষত ক্যোরি অপ্টিমাইজার up

চূড়ান্ত শারীরিক বাস্তবায়ন পরিকল্পনাটি অপ্টিমাইজারের যুক্তি দক্ষতা, সমস্যার জন্য ব্যয় করার জন্য কতটা সময় প্রস্তুত করে, উপযুক্ত অ্যাক্সেস পদ্ধতির উপলব্ধতা (প্রাথমিকভাবে সূচক এবং বস্তুগত দৃষ্টিভঙ্গি), প্রতিনিধি পরিসংখ্যান তথ্য এবং নির্দিষ্ট কোডের পথের উপর নির্ভর করবে কোয়েরি স্পেসিফিকেশন অপ্টিমাইজেশন কোডের মাধ্যমে নেয় takes

সাধারণভাবে, যদি আপনার ডাটাবেস ডিজাইনটি আপেক্ষিক হয় তবে আপনি ভাল অ্যাক্সেসের পদ্ধতি এবং সঠিক পরিসংখ্যান সম্পর্কিত তথ্য সরবরাহ করেন এবং কোয়েরিটি ভালভাবে লেখা আছে, অপ্টিমাইজার সাধারণত লিখিত ফর্মটি সম্পর্কে খুব বেশি চিন্তা করার প্রয়োজন ছাড়াই একটি যুক্তিসঙ্গত শারীরিক সম্পাদন কৌশল পাবেন normal প্রশ্নের স্পেসিফিকেশন খুব বেশি too

বিভিন্ন ক্ষেত্রে (তবে শব্দার্থগতভাবে অভিন্ন) সিনট্যাক্স ব্যবহার করে একই যুক্তির প্রয়োজনীয়তা প্রকাশ করা শারীরিক সম্পাদন পরিকল্পনাকে প্রভাবিত করবে এমন ক্ষেত্রে সর্বদা ক্ষেত্রে দেখা যাবে তবে এটি একটি গৌণ উদ্বেগ হওয়া উচিত। আবার, সাধারণত, রানটাইমের বৈশিষ্ট্যগুলি যদি অগ্রহণযোগ্য হয় তবে কেবল উপরে আলাদাভাবে জিজ্ঞাসাটি প্রকাশ করার কথা বিবেচনা করুন, উপরে বর্ণিত সমস্ত বেসিকগুলি একবার coveredেকে দেওয়া হয়েছে।

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

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

বাস্তবায়নের বিশদ হিসাবে, না, এসকিউএল সার্ভার ডেটা টাইপ বা আপাত গণনা জটিলতার উপর নির্ভর করে তুলনা ব্যয় বিবেচনা করে না। আসলে, স্কেলার অপারেশনগুলির জন্য মূল্যবান অল্প ব্যয়বহুল সমস্ত কিছুই রয়েছে তবে এটি সম্পূর্ণ পৃথক বিষয়কে নিয়ে যায়।

সম্পর্কিত প্রশ্নগুলি:

লজিকাল অপারেটরগুলি এবং যেখানে শর্ত এবং শর্তের শর্তে যেখানে
এসকিউএল সার্ভার ২০০৮ এবং ধ্রুবক অভিব্যক্তি
বিটওয়াইস অপারেটরগুলি কার্য সম্পাদনকে প্রভাবিত করে
অদ্ভুত এসকিউএল বিবৃতি আচরণ


5

বাইনারি পার্টিশন (বিট কলামের মতো) ফিল্টারড ইনডেক্সের জন্য ভাল প্রার্থীদের মত শোনাচ্ছে।

CREATE NONCLUSTERED INDEX MyTableWithBitFieldTrue
ON MyTable (VarcharField)
INCLUDE Id, <other columns you're selecting>
WHERE BitField = 1 ;
GO

আপনার অপ্টিমাইজেশান সম্পর্কে সুস্পষ্ট হওয়ার অর্থ আপনার কোডবেস বা এসকিউএল সার্ভারে হোক না কেন আপনার কোড অন্য ব্যক্তির পরিবর্তনের চারপাশে আরও দৃ is়।

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