2009-03-17 1 views
7

कौन आपको लगता है कर तेजी से एक PHP स्क्रिप्ट में है:

$query = "SELECT... FROM ... ORDER BY first_val"; 

या

while($row = odbc_fetch_array($result)) 
    $arrayname[] = array(
     "first_key" => $row['first_val'], 
     "second_key" => $row['second_val'], 
     etc... 
    ); 
sort($arrayname); 
+0

महान जवाब हर किसी को है, धन्यवाद ... मैं upvoted हर कोई इतना ya'll है कुछ प्रतिनिधि –

उत्तर

13

यह इतने सारे कारक है कि मैं भी क्या साथ शुरू पता नहीं है पर निर्भर करता है।

लेकिन एक नियम के रूप में, आप डेटाबेस तरफ छँटाई प्रदर्शन।

इंडेक्स, collations और यह सब, वे मदद करते हैं।

+1

+1 मिलेगा। डेटाबेस के खिलाफ अपने कोड पिचिंग सिर्फ दिल की धड़कन की ओर जाता है। – Learning

+0

+1, लेकिन सुनिश्चित करने के लिए karim79 के उत्तर (समय परीक्षण) आज़माएं। – altermativ

+0

दरअसल, ऐसे मामले होते हैं जब क्लाइंट साइड सॉर्ट तेज़ होता है, और मैंने इसे अपने अनुप्रयोगों में से एक में भी इस्तेमाल किया। समय परीक्षण परीक्षण और खंड के लिए लंबवत पर विफल हो जाएगा, और हम नहीं जानते कि उनके लिए क्या विकल्प है। – Quassnoi

2

तो आदेश दिया क्षेत्र अनुक्रमित की गई है, मैं शायद कहेंगे SQL क्वेरी। यदि नहीं, तो मुझे यकीन नहीं है, लेकिन मैं कल्पना नहीं कर सकता कि यह किसी भी तरह से अधिक ध्यान देने योग्य नहीं होगा जबतक कि आप एक बड़ी संख्या में पंक्तियों से निपट नहीं रहे हैं।

2

आदेश द्वारा लगभग हमेशा तेजी से हो जाएगा।

4

कौन आपको लगता है कर तेजी से एक PHP स्क्रिप्ट में है:

ORDER BY PHP स्क्रिप्ट में निष्पादित नहीं करता है - यह डेटाबेस में कार्यान्वित होने से पहले डेटा PHP स्क्रिप्ट के द्वारा प्राप्त किया गया है। क्षमा करें अगर यह पैडेंटिक लगता है, तो मैं बस यह सुनिश्चित करना चाहता हूं कि आप इसे समझें।

वैसे भी, मैं ORDER BY का उपयोग करने का कारण यह है कि डेटाबेस में डेटाबेस से इंडेक्स और कैश किए गए पृष्ठों तक पहुंच है। PHP में छंटनी डेटा की यादृच्छिक रूप से सेट की जाती है, लेकिन किसी भी इंडेक्स तक पहुंच नहीं है।

+0

धन्यवाद स्पष्टीकरण के लिए ... मैं समझता हूँ करो, बस ya'll एक छोटे संदर्भ देने की कोशिश की। –

2

मेरी राय में, कुछ भी नहीं है वास्तव में तो तुम बात समय धड़कता है सच में, सच निश्चित रूप से पता:

$time_start = microtime(true); 

// Try the ORDER BY and sort($array) variants here 

$time_end = microtime(true); 
$time = $time_end - $time_start; 

echo "It took $time seconds"; 
2

अगर वहाँ पहली क्वेरी पर एक सीमा है, और पंक्तियों क्वेरी बिना मेल खाने वाली इकाइयों सेट LIMIT LIMIT से बहुत बड़ा है, फिर क्वेरी पर ORDER निश्चित रूप से तेज़ी से है।

ऐसा कहने के लिए, यदि आपको 10,000 पंक्ति तालिका से शीर्ष 50 पंक्तियों की आवश्यकता है, तो आपके लिए डाटाबेस सॉर्ट करना बहुत तेज़ है, और केवल 10,000 शीर्ष पंक्तियों को पुनर्प्राप्त करने की तुलना में उन शीर्ष 50 पंक्तियों को वापस लौटाएं, उन्हें स्वयं PHP में क्रमबद्ध करें। यह किसी भी मामले हैं जहां पर सभी PHP में छँटाई भी तुलनीय है देखते हैं, तो क्या वास्तविक दुनिया अनुप्रयोगों

में होगा के विशाल बहुमत की शायद प्रतिनिधि है, वे कुछ और दूर के बीच कर रहे हैं।

साथ ही, एसक्यूएल छंटाई अधिक शक्तिशाली है - यह एकाधिक स्तंभों, सबक्वेरी, कुल कार्यों की वापसी मूल्यों पर सॉर्ट करने के लिए तुच्छ है आदि