मेरे तालिकाPHP MySQL पृष्ठांकन मेज है कि धीमी गति से
Field Type Null Key Default Extra
id int(11) NO PRI NULL auto_increment
userid int(11) NO MUL NULL
title varchar(50) YES NULL
hosting varchar(10) YES NULL
zipcode varchar(5) YES NULL
lat varchar(20) YES NULL
long varchar(20) YES NULL
msg varchar(1000)YES MUL NULL
time datetime NO NULL
है। मैंने डेटा की 500k पंक्तियों को अनुकरण किया है और 500k की ऑटो वृद्धि के साथ केवल 230k छोड़ने के लिए यादृच्छिक रूप से 270k पंक्तियों को हटा दिया है।
यहाँ मेरी indexs
Keyname Type Unique Packed Field Cardinality Collation Null
PRIMARY BTREE Yes No id 232377 A
info BTREE No No userid 2003 A
lat 25819 A YES
long 25819 A YES
title 25819 A YES
time 25819 A
इसे ध्यान में रखते
कर रहे हैं, यहाँ मेरी क्वेरी है:
चुनें *
posts
से कहांlong
> -११८.१३९०२८०२८८६ औरlong
< -११८.०८१३०७९७११४ औरlat
> ३३.७९९८७१९७११४ औरlat
< 33.85759202886 आईडी एएससी लिमिटेड द्वारा आदेश 0, 25
दिखा पंक्तियों 0 - 15 (16 कुल, क्वेरी ले लिया 1.5655 सेकंड) [आईडी: 32846 - 540342]
क्वेरी केवल मुझे 1 पृष्ठ लाया, लेकिन यह अभी भी 1.5 सेकंड ले लिया है क्योंकि यह सब 230k रिकॉर्ड खोज करने के लिए किया था । यहां तक कि अगर मैं का उपयोग जहां केवल वापस पाने के 16 परिणामों के लिए खंड मैं अभी भी एक धीमी गति से क्वेरी मिल
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE posts index NULL PRIMARY 4 NULL 25 Using where
तो:
क्वेरी समझाया है।
अब उदाहरण के लिए अगर मैं एक व्यापक खोज करते हैं:
SELECT * FROM `posts` WHERE `long`>-118.2544681443 AND `long`<-117.9658678557 AND `lat`>33.6844318557 AND `lat`<33.9730321443 ORDER BY id ASC LIMIT 0, 25
दिखा पंक्तियों 0 - 24 (कुल 25, क्वेरी ले लिया .0849 सेकंड) [आईडी: 691 - 29818]
यह बहुत तेजी से होता है जब 20 पृष्ठों और 483 से बाहर पहले पृष्ठ को पुन: प्राप्त कुल पाया, लेकिन मैं 25
को सीमित लेकिन अगर मैं अंतिम पृष्ठ
SELECT * FROM `posts` WHERE `long`>-118.2544681443 AND `long`<-117.9658678557 AND `lat`>33.6844318557 AND `lat`<33.9730321443 ORDER BY id ASC LIMIT 475, 25
के लिए पूछना
पंक्तियां दिखा रहा है 0 - 7 (8 कुल, क्वेरी 1.5874 सेकंड लिया गया) [आईडी: 5531 9 8 - 55 9 5 9 3]
मुझे धीमी क्वेरी मिलती है।
मेरा सवाल है कि मैं अच्छी अंकन कैसे प्राप्त करूं? जब वेबसाइट लाइव हो जाती है तो मुझे उम्मीद है कि जब यह बंद हो जाएगा तो उन पदों को हटा दिया जाएगा और सैकड़ों द्वारा दैनिक बनाया जाएगा। पदों को आईडी या टाइमस्टैम्प द्वारा आदेश दिया जाना चाहिए और आईडी अनुक्रमिक नहीं है क्योंकि कुछ रिकॉर्ड हटा दिए जाएंगे। मैं एक मानक पृष्ठांकन के लिए अपने परिणामों को रिकॉर्ड से
1 2 3 4 5 6 7 8 ... [Last Page]
क्या आप स्टोरेज इंजन और इंडेक्स के बारे में जानकारी जोड़ सकते हैं? –
मैंने प्रत्येक कॉलम को अनुक्रमित किया है। और यह मैसूर इंजन है। – c3cris
@CrisG क्या आप इस प्रश्न पर एक बक्षीस चाहते हैं? eggyal का जवाब बहुत अच्छा लग रहा है, लेकिन आपने टिप्पणी में अपने अंतिम प्रश्न का कभी जवाब नहीं दिया। यदि आप इसे उत्तर देने की आवश्यकता है (मैं एक उपहार के लिए खुला है) तो मैं इस पर आपके लिए एक बक्षीस लगाने के इच्छुक हूं। – Matt