উত্তর:
এর মানে হল এই COUNT(any_non_null_column)
হিসাবে একই দেব COUNT(*)
কারণ কোন শূন্য মান পার্থক্য সৃষ্টি হয় অবশ্যই।
সাধারণত, COUNT(*)
আরও ভাল হওয়া উচিত কারণ যে কোনও সূচক ব্যবহার করা যেতে পারে কারণ সূচী COUNT(column_or_expression)
বা SARGable নাও হতে পারে
থেকে ANSI-92 ( "জন্য চেহারা Scalar expressions 125
")
কেস:
ক) যদি COUNT (*) নির্দিষ্ট করা থাকে তবে ফলাফলটি টি এর কার্ডিনালিটি is
খ) অন্যথায়, টিএক্সকে একক-কলামের সারণী হতে দিন যা টির প্রতিটি সারিতে <মান প্রকাশ> প্রয়োগ এবং নাল মানগুলি মুছে ফেলার ফলাফল। যদি এক বা একাধিক নাল মানগুলি মুছে ফেলা হয়, তবে একটি সমাপ্তির শর্ত উত্থাপিত হয়: সতর্কতা-নাল মান সেট ফাংশনে মুছে ফেলা হয়।
একই বিধিগুলি কমপক্ষে এসকিউএল সার্ভার এবং সিবাসে প্রযোজ্য
দ্রষ্টব্য: COUNT (1) হ'ল COUNT (*) এর সমান কারণ 1 হ'ল একটি নন-অযোগ্য এক্সপ্রেশন।
COUNT(*)
, COUNT(<constant>)
এবং COUNT(<column name>)
এবং যে সব তিনটি প্রিফিক্স যেতে পারে ALL
বা DISTINCT
(নির্ধারিত লিঙ্ক ALL
বাদ দেওয়া হলে)। আমি কেবল ভাবছি আপনি যেখানে বলছেন সেখানে কোন অভিব্যক্তিটি ব্যবহার করা যেতে পারে _or_expression
?
COUNT(1)
অকেজো উদাহরণ হিসাবে @neday যখন, এটি একই রকম COUNT(*)
। COUNT(CASE WHEN a>b THEN 1 END)
উদাহরণ হিসাবে যে সারি গণনা যেখানে a> খ।
ওরাকলের যে কোনও সাম্প্রতিক (অর্থাত্ 8.x + ) সংস্করণে তারা একই কাজ করে । অন্য কথায় পার্থক্যটি কেবল শব্দার্থক:
select count(*) from any_table
আপনি যা করার চেষ্টা করছেন তা সহজেই পঠনযোগ্য এবং স্পষ্ট is
select count(any_non_null_column) from any_table
কারণ পড়া কঠিন
any_non_null_column
সত্যিই হিসাবে প্রয়োগ করা হয়েছে কিনা তা নিয়ে ভাবতে হবেnot null
সংক্ষেপে, ব্যবহারcount(*)
একটি সাম্প্রতিক সংস্করণ আছে প্রকৃতপক্ষে COUNT (*) এবং COUNT (মধ্যে কোন পার্থক্য নেই কোনো না নাল কলাম ), জোর দিয়ে নাল না :-) প্রসঙ্গক্রমে একটি ব্লগ পোস্টের সাথে যে বিষয় ঢেকে: COUNT (কর্নেল) গণনা চেয়েও বড় (*)?
বইয়ে Oracle8i সার্টিফাইড পেশাগত DBA সার্টিফিকেশন পরীক্ষার গাইড (ISBN-0072130601) , পৃষ্ঠা 78 COUNT টি (1) দ্রুত যে আসলে চালানো হবে বলে COUNT টি (*) কারণ নির্দিষ্ট প্রক্রিয়া প্রতিটি কলামের এর nullability জন্য তথ্য অভিধান চেক করার জন্য খেলার মধ্যে বলা হয় (অথবা অন্তত অ nullability প্রথম কলাম) যখন ব্যবহার COUNT টি (*) । COUNT (1) এই প্রক্রিয়াগুলিকে বাইপাস করে।
মাইএসকিউএল টিবিএলনামে 'নির্বাচন COUNT (1) এর জন্য প্রতারণা করে;' সারণী গণনার জন্য সারণী শিরোনাম পড়ে মাইআইএসএএম টেবিলগুলিতে। ইনোডিবি প্রতিবার গণনা করে।
অ্যানোস্টিক উপায়ে COUNT (*) COUNT (*) এর চেয়ে দ্রুত চলবে কিনা তা পরীক্ষা করতে কেবল নিম্নলিখিতটি চালান এবং চলমান সময়টি নিজের জন্য বিচার করুন:
SELECT COUNT(1) FROM tblname WHERE 1 = 1;
SELECT COUNT(*) FROM tblname WHERE 1 = 1;
SELECT COUNT(column-name) FROM tblname WHERE 1 = 1;
স্টোরেজ ইঞ্জিন বা আরডিবিএমএস নির্বিশেষে এটি COUNT ফাংশনটিকে একই স্তরের প্লেয়িং ফিল্ডে পরিচালিত করে।
count(*)
ব্যবহার করবে।