মান এবং হ্যাশগুলির একটি সারণী বিবেচনা করুন, এর মতো:
+------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| val | char(9) | NO | | NULL | |
| val_hashed | char(50) | YES | | NULL | |
+------------+----------+------+-----+---------+----------------+
নিম্নলিখিত কোয়েরি 0.00 সেকেন্ডের মধ্যে শেষ হয়:
SELECT * FROM hashes ORDER BY 1 DESC LIMIT 1;
যাইহোক, এই কোয়েরিটি 3 মিনিট 17 সেকেন্ড সময় নেয়:
SELECT val FROM hashes ORDER BY 1 DESC LIMIT 1;
আমি দেখতে পাচ্ছি যে ক্যোয়ারী চলাকালীন প্রক্রিয়া তালিকাটি এটি স্থিতি হিসাবে দেখায় Sorting result
। পরিস্থিতি সম্পূর্ণ পুনরুত্পাদনযোগ্য। নোট করুন যে INSERT
টেবিলটিতে অবিচ্ছিন্নভাবে অপারেশন করে চলেছে আরও একটি প্রক্রিয়া ।
কেন আরও নির্দিষ্ট ক্যোয়ারী ক্যোয়ারীর চেয়ে বেশি সময় নিতে পারে *
? আমি সবসময় বিশ্বাস করি যে *
কার্য সম্পাদনের কারণে অনুসন্ধানগুলি বিশেষত এড়ানো উচিত।
ORDER BY NUMBER
সিনট্যাক্স বেশ প্রবণ ত্রুটি।
SELECT *
একটি কলাম সূচকের সাথে একত্রিত করা কোন কলামটি ORDER BY
বাছাই করা হচ্ছে তা অবহেলা করছে - *
এস এড়ানোর অন্য কারণ ...
*
স্পষ্ট নয়। সুতরাং "আমাকে সমস্ত কলাম দিন এবং তৃতীয়টি অনুসারে বাছাই করুন" বলতে "সুপার মার্কেটে যান এবং আপনি কতটা ট্র্যাফিক লাইট পাস করেছেন তা আমাকে বলুন"
id
প্রথম সারিটি সন্ধান করতে প্রাথমিক কী সূচক ব্যবহার করে । দ্বিতীয়টিকে সম্পূর্ণ ফলাফলটি (আনডেক্সড)val
কলামে বাছাই করতে হবে।