এসকিউএল সার্ভার যোগদান / যেখানে প্রক্রিয়া অর্ডার


18

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

উদাহরণস্বরূপ, এটি করা উচিত:

SELECT *
FROM   ( SELECT * FROM table1 WHERE col = @val ) t
INNER JOIN table2 ON col = col2

এর থেকে আরও ভাল / দ্রুত থাকুন:

SELECT *
FROM table1
INNER JOIN table2 ON col = col2
WHERE table1.col = @val

আমার তত্ত্বটি নিম্নরূপে রয়েছে (এটি সঠিক বাস্তবায়ন হতে পারে না, আমি একটি এসকিউএল সার্ভার ২০০৮ ইন্টার্নাল বইটি পড়েছি (এমএসএফটি প্রেস) থেকে স্মরণ করার চেষ্টা করছি):

  1. ক্যোয়ারী প্রসেসর প্রথমে বাম টেবিল পায় (টেবিল 1)
  2. দ্বিতীয় সারণীতে (টেবিল 2) যোগদান করে এবং প্রয়োজনীয় সারিগুলি ফিল্টার করার আগে একটি কার্টেসিয়ান পণ্য তৈরি করে (প্রযোজ্য ক্ষেত্রে)
  3. তারপরে SEELCT বিবৃতিটি সর্বশেষে কোথায়, অর্ডার দ্বারা, গ্রুপ দ্বারা গ্রাহক করা হচ্ছে forms

সুতরাং উপরের # 1 বিবৃতিতে, টেবিলটি ছোট হলে, কার্তেসিয়ান পণ্য গঠনের সময় এসকিউএল ইঞ্জিনের খুব কম কাজ হবে। তারপরে আপনি যখন বিবৃতিতে পৌঁছবেন তখন মেমরিতে ফিল্টার করার জন্য আপনার একটি কম ফলাফল সেট রয়েছে।

আমি এটি অবাস্তব চিহ্ন থেকে দূরে হতে পারে। যেমনটি আমি বলেছিলাম, এটি একটি তত্ত্ব।

আপনার চিন্তাগুলো?

দ্রষ্টব্য : আমি কেবল এই প্রশ্নটি নিয়েই ভেবেছি এবং আমার নিজের কোনও পরীক্ষা চালানোর সুযোগ হয়নি।

দ্রষ্টব্য 2 : এসকিউএল সার্ভার হিসাবে ট্যাগ করা হিসাবে আমি মাইএসকিএল ইত্যাদির বাস্তবায়ন সম্পর্কে কিছুই জানি না । দয়া করে যেকোনোভাবেই উত্তর / মন্তব্য করতে দ্বিধা বোধ করবেন

উত্তর:


15

কোনও প্রশ্নের যৌক্তিক প্রক্রিয়াকরণটি এমএসডিএন- তে রয়েছে (মাইক্রোসফ্ট এসকিউএল সার্ভার দল লিখেছেন, তৃতীয় পক্ষ নয়)

1. FROM
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. WITH CUBE or WITH ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10. ORDER BY
11. TOP

একটি উত্পন্ন টেবিল এটি অনুসরণ করে, তারপরে বাইরের ক্যোয়ারী এটি আবার করে ইত্যাদি ইত্যাদি

যদিও এটি যৌক্তিক : বাস্তব নয় । এসকিউএল সার্ভারটি বাস্তবে এটি কী করে না, এই শব্দার্থকরা চিঠিতে সম্মানিত । "প্রকৃত" কোয়েরি অপটিমাইজার (কিউও) দ্বারা নির্ধারিত হয় এবং আপনি উল্লিখিত মধ্যবর্তী কার্টেশন পণ্যটি এড়িয়ে যান।

এটি এসকিউএল ঘোষণামূলক বলে উল্লেখযোগ্য: আপনি একটি প্রসেসরাল / অপরিহার্য প্রোগ্রামিং (জাভা,। নেট) এর জন্য আপনার পছন্দ "কী" নয় "বলছেন। সুতরাং "এটির আগে এটি ঘটে" বলা অনেক ক্ষেত্রে ভুল (উদাহরণস্বরূপ শর্ট সার্কিটের ধারণা বা এল-টু-আর যেখানে অর্ডার দেওয়া হয়)

উপরের আপনার ক্ষেত্রে, কিউও একই পরিকল্পনা তৈরি করবে কিভাবে তা কাঠামোগত হয় না কেননা এটি একটি সাধারণ প্রশ্ন is

তবে কিউও ব্যয়ভিত্তিক এবং একটি জটিল প্রশ্নের জন্য আদর্শ পরিকল্পনা তৈরি করতে 2 সপ্তাহ সময় লাগতে পারে। সুতরাং এটি "যথেষ্ট ভাল" যা আসলে তা নয়।

সুতরাং আপনার প্রথম কেসটি অপ্টিমাইজারকে আরও ভাল পরিকল্পনা খুঁজে পেতে সহায়তা করতে পারে কারণ 2 প্রশ্নের জন্য লজিকাল প্রসেসিং অর্ডার আলাদা। তবে তা নাও পারে।

রিপোর্টিং কোয়েরিতে 60x গতির কার্যকারিতা উন্নতি পেতে আমি এসকিউএল সার্ভার 2000 এ এই কৌশলটি ব্যবহার করেছি। কিউও সংস্করণে সংস্করণ উন্নত করার সাথে সাথে এই জিনিসগুলি কাজ করার ক্ষেত্রে আরও ভাল হয়।

এবং আপনি যে বইটি উল্লেখ করেছেন: এতে কিছু বিতর্ক রয়েছে
এসও এবং পরবর্তী লিঙ্কগুলি দেখুন: /programming//q/3270338/27535


6

একটি এসকিউএল কোয়েরি প্রকৃতিগত নয়, যোগদানকারী অপারেটরগুলির শীর্ষ থেকে নীচে কোনও প্রক্রিয়া নেই। আপনার উদাহরণ কোয়েরিতে সারণির ক্রম কার্যকর করার পরিকল্পনার উপর কোনও প্রভাব ফেলবে না কারণ তারা যুক্তিযুক্তভাবে সমতুল্য এবং ঠিক একই পরিকল্পনা উত্পন্ন করবে।

আপনি এই ক্যোয়ারির জন্য পরিকল্পনা তৈরি করার সময় কোয়েরি অপটিমাইজার বিবেচনা করতে পারে এমন দুটি বিকল্পের মূল্যায়ন করার পদ্ধতি আপনি রেখেছেন । পরিকল্পনার পছন্দকে প্রভাবিত করে এমন প্রাথমিক উপাদানটি হ'ল জড়িত সারণীর পরিসংখ্যান এবং যে কোনও প্রার্থীর পরিকল্পনায় অপারেটরের পছন্দগুলির সাথে সম্পর্কিত ব্যয়

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

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

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