2015-02-18 6 views
9

में ऑर्डरबी के साथ गेटल का उपयोग कैसे करें मैं दो सूचीओं के बीच आईडी = 1 रिकॉर्ड करना चाहता हूं और आखिरकार उन्हें टाइमस्टैम्प के अनुसार आदेश देना चाहता हूं।RethinkDB

MySQL क्वेरी कुछ:

Select * from test 
where (timestamp between 100099323 AND 1423699323) AND id=1 
order by timestamp 

पुनर्विचार डेटाबेस में 5 मिलियन से अधिक दस्तावेज नहीं है।

Select * from test where id=1 order by timestamp 

और Rethinkdb क्वेरी है:

मैं सरल mysql क्वेरी के लिए सूचकांक उपयोग करने की कोशिश

r.table('test').getAll(1, {index: 'id'}).orderBy({index: 'timestamp'}) 

लेकिन मैं त्रुटि हो रही है:

RqlRuntimeError: Indexed order_by can only be performed on a TABLE or 
TABLE_SLICE in: 
r.table("test").getAll(1, {index: "id"}).orderBy({index: "timestamp"}) 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

कोई भी सुझाव?

उत्तर

11

रेथिंक डीबी कुशल इंडेक्स चौराहे का समर्थन नहीं करता है (यह जोड़ने के लिए गिथब मुद्दा #809 है), लेकिन आप 'आईडी' और 'टाइमस्टैम्प' इंडेक्स के लिए एक कंपाउंड इंडेक्स जोड़कर कुशलता से इस क्वेरी को कार्यान्वित कर सकते हैं।

अपने परिणाम सेट काफी छोटा है, हालांकि, orderBy बस पूरी तरह से इन-स्मृति 'सूचकांक' optarg छोड़ने के द्वारा किया जा सकता है:

r.table("test").getAll(1, {index: "id"}).orderBy("timestamp") 

बड़े परिणाम सेट के लिए कुशलता से ऐसा करने के लिए, आप चाहते हैं एक सूचकांक की आवश्यकता है। अपने 'आईडी' मान लिया जाये और 'टाइमस्टैम्प' अनुक्रमित अपनी पंक्तियों में क्षेत्रों के लिए सीधे अनुरूप, सूचकांक जोड़ने दिखाई देगा:

r.table("test").indexCreate("id_time", 
          function(row) { 
           return [row("id"), row("timestamp")]; 
          }) 

id=1 वाली सभी पंक्तियों प्राप्त करने के लिए और तरह टाइमस्टैम्प द्वारा, आप तो चल पाएंगे:

r.table("test").between([1], [2], {"index": "id_time"}) 
       .orderBy({"index": "id_time"}) 

इसके अलावा, वापस मूल प्रश्न आप पोस्ट करने के लिए जा रहा है, आप id=1 के लिए दो टाइमस्टैंप के बीच चलाकर क्वेरी सकता है:

r.table("test").between([1, <time 1>], [1, <time 2>], {"index": "id_time"}) 
       .orderBy({"index": "id_time"}) 
संबंधित मुद्दे