'নির্বাচন শীর্ষ' কর্মক্ষমতা প্রশ্ন


18

আমার একটি ক্যোয়ারী রয়েছে যা নির্বাচনের সাথে আরও দ্রুত top 100এবং বেশ ধীর ছাড়া চলে top 100। প্রত্যাবর্তিত রেকর্ডের সংখ্যা 0 হয় আপনি কি ক্যোয়ারী পরিকল্পনার পার্থক্য ব্যাখ্যা করতে পারেন বা লিঙ্কগুলি ভাগ করতে পারেন যেখানে এইরকম পার্থক্য ব্যাখ্যা করা হয়েছে?

topপাঠ্য ছাড়াই ক্যোয়ারী :

SELECT --TOP 100
*
FROM InventTrans
     JOIN
     InventDim
     ON InventDim.DATAAREAID = 'dat' AND 
        InventDim.INVENTDIMID = InventTrans.INVENTDIMID
WHERE InventTrans.DATAAREAID = 'dat' AND 
      InventTrans.ITEMID = '027743' AND 
      InventDim.INVENTLOCATIONID = 'КзРЦ Алмат' AND 
      InventDim.ECC_BUSINESSUNITID = 'Казахстан';

উপরের (ব্যতীত top) জন্য ক্যোয়ারী পরিকল্পনা :

https://pastebin.com/cbtJpxFf

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

আইও এবং টাইম পরিসংখ্যান (ছাড়াই top):

SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

(0 row(s) affected)
Table 'INVENTDIM'. Scan count 0, logical reads 988297, physical reads 0, read-ahead reads 1, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'INVENTTRANS'. Scan count 1, logical reads 1234560, physical reads 0, read-ahead reads 14299, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

(1 row(s) affected)

 SQL Server Execution Times:
   CPU time = 6256 ms,  elapsed time = 13348 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

ব্যবহৃত সূচকগুলি (ছাড়াই top):

1. INVENTTRANS.I_177TRANSIDIDX
   4 KEYS:
 - DATAAREAID
 - INVENTTRANSID
 - INVENTDIMID
 - RECID
2. INVENTTRANS.I_177ITEMIDX
   3 KEYS:
   - DATAAREAID
   - ITEMID
   - DATEPHYSICAL 
3. INVENTDIM.I_698DIMIDIDX
   2 KEYS:
   - DATAAREAID
   - INVENTDIMID

এর সাথে ক্যোয়ারী top:

SELECT TOP 100
*
FROM InventTrans
     JOIN
     InventDim
     ON InventDim.DATAAREAID = 'dat' AND 
        InventDim.INVENTDIMID = InventTrans.INVENTDIMID
WHERE InventTrans.DATAAREAID = 'dat' AND 
      InventTrans.ITEMID = '027743' AND 
      InventDim.INVENTLOCATIONID = 'КзРЦ Алмат' AND 
      InventDim.ECC_BUSINESSUNITID = 'Казахстан';

ক্যোয়ারী প্ল্যান (টপ সহ):

https://pastebin.com/0dyu6QZd

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


ক্যোরিটি আইও এবং টাইম পরিসংখ্যান (শীর্ষ সহ):

SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

(0 row(s) affected)
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'INVENTTRANS'. Scan count 15385, logical reads 82542, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'INVENTDIM'. Scan count 1, logical reads 62704, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

(1 row(s) affected)

 SQL Server Execution Times:
   CPU time = 265 ms,  elapsed time = 257 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

ব্যবহৃত সূচী (শীর্ষ সহ):

 1. INVENTTRANS.I_177TRANSIDIDX
     4 KEYS:
     - DATAAREAID
     - INVENTTRANSID
     - INVENTDIMID
     - RECID
 2. INVENTTRANS.I_177DIMIDIDX
    3 KEYS:
    - DATAAREAID
    - INVENTDIMID
    - ITEMID
 3. INVENTDIM.I_698DIMIDIDX
    2 KEYS:
    - DATAAREAID
    - INVENTDIMID
 4. INVENTDIM.I_698ECC_BUSUNITLOCIDX
    3 KEYS
    - DATAAREAID
    - ECC_BUSINESSUNITID
    - INVENTLOCATIONID

বিষয়টিতে যে কোনও সহায়তার গভীরভাবে প্রশংসা করবেন!


2
'অর্ডার বাই' ব্যতীত 'শীর্ষ' এর গতি আমার মনে হয় না। সঠিক ফলাফল গতির চেয়ে গুরুত্বপূর্ণ।
ড্যান গুজম্যান

উত্তর:


15

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

এর সহজ উদাহরণগুলির জন্য, পড়ুন কীভাবে একটি সারি একটি ক্যোয়ারী প্ল্যান পরিবর্তন করতে পারে? পার্ট 1 এবং পার্ট 2

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

নীচের লাইন: আপনার ক্ষেত্রে, যদি আপনি জানেন যে কোনও সারি ফিরে আসবে না, ভাল ... কোয়েরিটি চালাবেন না, তাই না? দ্রুততম ক্যোয়ারী হ'ল আপনি কখনও করেন নি। তবে, যদি আপনার কোনও অস্তিত্ব পরীক্ষা করতে হয় তবে কেবল উপস্থিত না থাকলে (এখানে স্টিক কোয়েরি) করুন, এবং তারপরে এসকিউএল সার্ভার একটি পৃথক বাস্তবায়ন পরিকল্পনা করবে।


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

এছাড়াও - আমার কোনও অর্ডার না থাকায় এটি কি আমার ক্ষেত্রে উপযুক্ত? সুতরাং আমি বিশ্বাস করি যে আমার পরিকল্পনায় কোনও SORT আসবে না?
জর্জ কে

TOP 100 এবং TOP 101 উভয়ের জন্যই কার্যকর করা পরিকল্পনাটি একই কিনা তা দেখতে খুব আকর্ষণীয় হবে it যদি সম্ভব হয় তবে শেয়ার করুন। ধন্যবাদ।
আরতাশেস খ্যাচাত্রিয়ান

@ জর্জেক আমি দেখতে পাচ্ছি আপনি ডায়নামিক্স এক্স ব্যবহার করছেন। ট্রেস ফ্ল্যাগ [ ব্লগস.এমএসএনএন.মাইক্রোসফট / ম্যাকসেটফিল্ডফিল্ড / …এর জন্য সতর্কতা অবলম্বন করুন যা প্রচুর পরিমাণে অনুমানের সমস্যার দিকে নিয়ে যেতে পারে। যদি ট্রেস ফ্ল্যাগ 4136 অক্ষম থাকে তবে "বিভাজন" কলামটি আপনার সূচীতে প্রথম কিনা তা পরীক্ষা করে দেখুন। পার্টিশনের সাধারণত খুব কম স্বতন্ত্র মান থাকে।
হান্স ভাদার

9

দুটি পরিকল্পনার দিকে তাকিয়ে, আপনার নাটকীয়ভাবে বিভিন্ন% ব্যয় সহ উভয়কেই একটি মূল অনুসন্ধান রয়েছে। আপনি যদি বস্তুগুলির উপর মাউসটি ঘোরােন তবে আপনি মৃত্যুদণ্ডের সংখ্যা দেখতে পাবেন।

মূল অনুসন্ধানটি ক্লাস্টারড ইনডেক্সের ফিরে ফিরে দেখা কারণ সূচীতে ব্যবহৃত সূচকটি সন্ধান করুন (উপরের ডানদিকে) সমস্ত কলাম কভার করছে না (নির্বাচন করুন * যাতে ক্লাস্টারড সূচকটি অবশ্যই ব্যবহার করা উচিত)।

শীর্ষস্থানীয় 100 সূচী থেকে কম পাঠে প্রয়োজনীয় 100 টি সারি পেতে সক্ষম হবে এবং তারপরে সারণীতে প্রতিটি সারিটির চেয়ে 100 বার অনুসন্ধান করবে। 'শীর্ষ' না করার সময় পঠিত পৃষ্ঠাগুলির বৃদ্ধি সম্পর্কেও ব্যাখ্যা করে।

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