Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

किसी अन्य तालिका के MAX() मान द्वारा सेट किए गए MySQL परिणाम का आदेश देना

select
  p.ID,
  e.NAME
from
  Paychecks p
  inner join Employee e on p.EmployeeID = e.ID
group by
  p.ID
order by
  max(p.AmountPaid) desc

लिखने का एक अलग तरीका, जो अधिक तार्किक लगता है, लेकिन धीमा हो सकता है (आपको परीक्षण करना होगा) है:

select
  e.ID,
  e.NAME
from
  Employee e
  inner join Paychecks p on p.EmployeeID = e.ID
group by
  e.ID
order by
  max(p.AmountPaid) desc

लाखों पंक्तियों के साथ, प्रत्येक क्वेरी कभी-कभी धीमी गति से बढ़ रही है, लेकिन उचित अनुक्रमणिका के साथ, यह जितनी तेज़ हो जाती है। मुझे लगता है कि आपको मूल रूप से Paychecks.EmployeeID और Paychecks.AmountPaid पर एक इंडेक्स की आवश्यकता है। और Employee.ID पर अनुक्रमणिका मदद कर सकती है।

यदि जॉइन अंत में आपको मार रहा है, तो आप दो प्रश्नों को निष्पादित कर सकते हैं। पहला वाला केवल तनख्वाह का उपयोग उन्हें कर्मचारी आईडी द्वारा समूहित करने के लिए करता है और उन्हें अधिकतम (पेचेकअमाउंट) द्वारा आदेश देता है, और दूसरे का उपयोग प्रत्येक आईडी के लिए नाम लाने के लिए किया जा सकता है। कभी-कभी आप जितना चाहते हैं उससे अधिक लागत में शामिल होते हैं, और जब आपको 500 कर्मचारियों के लिए 10 मिलियन तनख्वाह मिलती है, तो इसे दो चरणों में करना तेज़ हो सकता है, हालांकि इसका मतलब यह होगा कि वे कंपनी में लगभग 1600 वर्षों से काम कर रहे हैं। .;-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीएचपी समर्थन के साथ मुफ्त वेब होस्टिंग

  2. MySQL समवर्ती सम्मिलन को कैसे संभालता है?

  3. कनेक्शन प्राप्त करना विफल:php_network_getaddresses:getaddrinfo विफल:नाम या सेवा ज्ञात नहीं है

  4. MySQL, उपयोगकर्ता रैंक प्राप्त करें

  5. mysql यादृच्छिक पूर्णांक श्रेणी कैसे प्राप्त करें?