এসকিউএল সার্ভার ২০১২-এ (বা 2005 সালের কোনও সংস্করণ) ব্যবহার SELECT *...
করা কোনও প্রশ্নের কোনও শীর্ষ স্তরের SELECT বিবৃতিতে কেবল সম্ভাব্য পারফরম্যান্স সমস্যা।
সুতরাং এটি দেখেছে (*), subqueries এ, অস্তিত্ব clause এ CTEs মধ্যে একটা সমস্যা হয় না, কিংবা এ SELECT COUNT(*)..
ইত্যাদি, ইত্যাদি নোট করুন এটি সম্ভবত সত্য ওরাকল জন্য, এবং DB2, এবং হয়ত PostGres (নিশ্চিত না) , তবে এটি খুব সম্ভবত মাইএসকিএল-র ক্ষেত্রে প্রচুর ক্ষেত্রে সমস্যা a
বোঝার জন্য কেন (এবং কেন এটা এখনও একটি টপ লেভেল নির্বাচন একটা সমস্যা হতে পারে), এটা কেন বুঝতে এটি আগের একটি সমস্যা, যা কারণ ব্যবহার ছিল সহায়ক SELECT *..
মানে হলো " সব কলাম ফেরত "। সাধারণভাবে এটি আপনার সত্যিকারের চেয়ে অনেক বেশি ডেটা ফেরত দেবে, যা স্পষ্টতই আরও অনেক আইও, ডিস্ক এবং নেটওয়ার্ক উভয়ই হতে পারে।
কম স্পষ্টতই এটি হ'ল এটি কোনও এসকিউএল অপ্টিমাইজার ব্যবহার করতে পারে এমন সূচী এবং ক্যোয়ারী পরিকল্পনাগুলিও সীমাবদ্ধ করে, কারণ এটি জানে যে শেষ পর্যন্ত এটি অবশ্যই সমস্ত ডেটা কলামকে ফিরিয়ে দিতে হবে। যদি এটি যদি আগেই জানতে পারে যে আপনি কেবল কয়েকটি নির্দিষ্ট কলামগুলিই চান তবে এটি প্রায়শই কেবলমাত্র কলামগুলি থাকা সূচকের সুবিধা নিয়ে আরও দক্ষ ক্যোয়ারী পরিকল্পনা ব্যবহার করতে পারে। ভাগ্যক্রমে এটি আগে জানার একটি উপায় রয়েছে যা কলাম তালিকায় আপনার পছন্দসই কলামগুলি স্পষ্টভাবে নির্দিষ্ট করার জন্য। তবে আপনি যখন "*" ব্যবহার করেন, আপনি "আমাকে শুধু সবকিছু দিন, আমার যা প্রয়োজন তা আমি খুঁজে বের করব" এর পক্ষে এই পক্ষে যাচ্ছেন।
হ্যাঁ, প্রতিটি কলামে প্রক্রিয়াজাতকরণের জন্য অতিরিক্ত সিপিইউ এবং মেমরির ব্যবহার রয়েছে, তবে এই দুটি জিনিসের তুলনায় এটি প্রায় সর্বদা গৌণ: আপনার প্রয়োজনীয় কলামগুলির জন্য প্রয়োজনীয় অতিরিক্ত ডিস্ক এবং নেটওয়ার্ক ব্যান্ডউইথ প্রয়োজন এবং কম ব্যবহার করতে হবে অনুকূলিত ক্যোয়ারী পরিকল্পনা কারণ এটি প্রতিটি কলামে অন্তর্ভুক্ত করতে হবে।
তাহলে কী বদলে গেল? মূলত, এসকিউএল অপ্টিমাইজারগুলি সফলভাবে "কলাম অপ্টিমাইজেশন" নামে একটি বৈশিষ্ট্য অন্তর্ভুক্ত করেছে যার অর্থ হ'ল, আপনি যদি এখনই কোয়েরির উপরের স্তরের স্তরে ব্যবহার করতে চান তবে তারা এখন নিম্ন স্তরের সাব-কোয়েরিতে সন্ধান করতে পারে।
এর ফলশ্রুতিটি হ'ল আপনি যদি কোনও প্রশ্নের নীচের / অভ্যন্তরীণ স্তরে 'নির্বাচন করুন ..' ব্যবহার করেন তবে তা আর গুরুত্বপূর্ণ নয়। পরিবর্তে, যা সত্যিই গুরুত্বপূর্ণ তা হ'ল শীর্ষ স্তরের নির্বাচন করুন কলাম তালিকার মধ্যে। আপনি যদি SELECT *..
শীর্ষে না ব্যবহার করেন, তবে এটি আবার একবারে অবশ্যই ধরে নিতে হবে যে আপনি সমস্ত কলামগুলি চান এবং তাই কলামের অনুকূলিতকরণ কার্যকরভাবে নিয়োগ করতে পারে না।
(* - দ্রষ্টব্য যে ভিউগুলিতে একটি পৃথক, গৌণ বাধ্যতামূলক সমস্যা রয়েছে *
যেখানে তারা "*" ব্যবহার করার সময় কলাম তালিকায় পরিবর্তনটি সর্বদা নিবন্ধভুক্ত করেন না this এটি সমাধান করার অন্যান্য উপায় রয়েছে এবং এটি কার্য সম্পাদনকে প্রভাবিত করে না))