কেন নাম নির্বাচন করে সমস্ত কলাম (আলাদা কলামের ক্রমে) নির্বাচন করার চেয়ে অনেক বেশি দ্রুত?


12

ক, ক, ক, ডি, ই, এফ, জি, এইচ, আই, জে, কে কলাম সহ একটি টেবিলে আমি পেয়েছি:

select * from misty order by a limit 25;
Time: 302.068 ms

এবং:

select c,b,j,k,a,d,i,g,f,e,h from misty order by a limit 25;
Time: 1258.451 ms

কলাম দ্বারা দ্রুত নির্বাচন করার উপায় আছে কি?

হালনাগাদ:

কোনও টেবিলে কোনও সূচি নেই, একটি নতুন তৈরি করা হয়েছে

এখানে বিশ্লেষণ বিশ্লেষণ, খুব বেশি সহায়ক বলে মনে হচ্ছে না:

explain analyze select * from misty order by a limit 25;

Limit  (cost=43994.40..43994.46 rows=25 width=190) (actual time=404.958..404.971 rows=25 loops=1)
->  Sort  (cost=43994.40..45731.11 rows=694686 width=190) (actual time=404.957..404.963 rows=25 loops=1)
     Sort Key: a
     Sort Method: top-N heapsort  Memory: 28kB
     ->  Seq Scan on misty  (cost=0.00..24390.86 rows=694686 width=190) (actual time=0.013..170.945 rows=694686 loops=1)
Total runtime: 405.019 ms
(6 rows)

এবং:

explain analyze select c,b,j,k,a,d,i,g,f,e,h from misty order by a limit 25;

Limit  (cost=43994.40..43994.46 rows=25 width=190) (actual time=1371.735..1371.745 rows=25 loops=1)
->  Sort  (cost=43994.40..45731.11 rows=694686 width=190) (actual time=1371.733..1371.736 rows=25 loops=1)
     Sort Key: a
     Sort Method: top-N heapsort  Memory: 28kB
     ->  Seq Scan on misty  (cost=0.00..24390.86 rows=694686 width=190) (actual time=0.015..516.355 rows=694686 loops=1)
Total runtime: 1371.797 ms
(6 rows)

কলাম কি একটি সূচকযুক্ত? আপনি বিশ্লেষণ ব্যাখ্যা পোস্ট করতে পারেন?
ব্যবহারকারী_0

1
একটানা দুটি নির্বাচন করা এবং সময়ের সাথে তুলনা করার ক্ষেত্রে আপনাকে যত্নবান হওয়া দরকার। দ্বিতীয় ক্যোয়ারীর ক্যাশে থাকা ডেটা সময়ের মধ্যে পার্থক্যের জন্য অ্যাকাউন্ট করে।
ওয়াল্টার মিট্টি 25'15

1
আমি মতভেদগুলিও দেখছি, যদিও উচ্চারণযোগ্য নয়। আমার টেবিলটিতে সারি রয়েছে = 514431 প্রস্থ = 215, এবং আমি select *কেসটির জন্য প্রায় 1.5s এবং প্রায় ২.২ সেগুলি আলাদা আলাদা ক্রমে তালিকাবদ্ধ কলামগুলি সহ নির্বাচনের জন্য পাই ।
কলিন 'হার্ট

যদি আমি একই আদেশ সব কলাম হিসাবে টেবিল সংজ্ঞায়িত তালিকাবদ্ধ করে আমি প্রায় হিসাবে যদি আমি একই সময়সূচি পাওয়া select *
কলিন 'হার্ট

2
শিরোনামটি বিভ্রান্তিকর। প্রশ্নটি আসলেই কেন একটি ধরণের সময়কাল আউটপুট কলামগুলির ক্রমের উপর নির্ভর করে।
ড্যানিয়েল ভ্যারিট

উত্তর:


12

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

উপায় দ্বারা, '*' অভ্যন্তরীণভাবে একটি তালিকায় রূপান্তরিত হয়েছে যা (স্বজ্ঞাত) সম্পর্কের টিউপল বর্ণনাকারীর সাথে মেলে।

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


@ কলিনটহার্ট, আশা করি তা কার্যকর হবে makes
অ্যামিটলান

হ্যাঁ. আমি আশা করতাম যে কিছু "পয়েন্টার শফলিং" ব্যবহার করে এই পদক্ষেপটি এড়িয়ে যাওয়া বা এটি আরও ছোট করা সম্ভব হবে, তবে এটি পিএজিএসকিএল-হ্যাকারদের জন্য একটি আলোচনা।
কলিন 'হার্ট

লজিকাল কলাম ক্রমক্রমিক কাজের সাম্প্রতিক পুনরুজ্জীবনের সাথে দিগন্তে কিছু উন্নতি হতে পারে ।
amitlan

আমি ইতিমধ্যে এটি সম্পর্কে চিন্তা ছিল এবং তাই আশা করি!
কলিন 'হার্ট

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