Hi Lugi,
I am sorry about the title, I means the SQL engine fetches more data
internally.
No, the account #20:0 has 120000 contacts while #20:1 only has 100000
contacts.
I will try your suggestion and give a feedback soon.
My Best,
Hung Tran
On Thursday, May 12, 2016 at 3:24:21 PM UTC+7, l.garulli wrote:
>
> Hi Hung,
> Your title is misleading: "The query execution is unstable, sometimes
> fetch more data". Why is fetching more data? Did you receive more than 100
> records?
>
> About the reason of the difference in timing, it looks like the record
> #20:1 has much more Contacts, right? This query is slow because it uses the
> index only for the order by, not for the lookup:
>
>
> * "documentAnalyzedCompatibleClass": 110866,*
> If you have 10M of contacts, it scans all the clusters to evaluate all the
> following conditions:
>
>
> * (OwnedBy.EntityInfo.State <> 200) AND (Account = #20:0) AND
> (EntityInfo.State = 0)*
> If you had a graph structure, you could start from the Account and
> traverse the connected contacts. So the following query:
>
> SELECT @rid, EmailAddress
> FROM Contact
> WHERE (OwnedBy.EntityInfo.State <> 200) AND (Account = #20:0) AND
> (EntityInfo.State = 0)
> ORDER BY EmailAddress ASC skip 100 limit 100
>
> Would be something like:
>
> SELECT @rid, EmailAddress FROM (
> SELECT expand( out('HasContacts') ) FROM #20:0
> )
> WHERE OwnedBy.EntityInfo.State <> 200 AND EntityInfo.State = 0
> ORDER BY EmailAddress ASC SKIP 100 LIMIT 100
>
>
>
> Best Regards,
>
> Luca Garulli
> Founder & CEO
> OrientDB <http://orientdb.com/>
>
>
> On 11 May 2016 at 19:41, Hung Tran <[email protected] <javascript:>>
> wrote:
>
>> Hi,
>>
>> I am using OrientDB 2.1.8 on Windows 2012 server platform.
>>
>> My SQL is
>>
>>
>> SELECT @rid, EmailAddress FROM Contact WHERE (OwnedBy.EntityInfo.State <>
>> 200) AND (Account = #20:0) AND (EntityInfo.State = 0) ORDER BY
>> EmailAddress ASC skip 100 limit 100
>>
>>
>> When I do a filter with Account = #20:0 which contains about 120000
>> contacts, the EXPLAIN is
>>
>> {
>> "result": [
>> {
>> "@type": "d",
>> "@version": 0,
>> "fullySortedByIndex": true,
>> "documentReads": 200,
>> "current": "#41:11015",
>> "documentAnalyzedCompatibleClass": 200,
>> "recordReads": 200,
>> "involvedIndexes": [
>> "IX_Contact_EmailAddress"
>> ],
>> "fetchingFromTargetElapsed": 250,
>> "indexIsUsedInOrderBy": true,
>> "evaluated": 200,
>> "elapsed": 251.53171,
>> "resultType": "collection",
>> "resultSize": 100,
>> "@fieldTypes":
>> "documentReads=l,current=x,documentAnalyzedCompatibleClass=l,recordReads=l,involvedIndexes=e,fetchingFromTargetElapsed=l,evaluated=l,elapsed=f"
>> }
>> ],
>> "notification": "Query executed in 0.575 sec. Returned 1 record(s)"
>> }
>>
>> there are only 200 records evaluated and took 0.575 sec.
>>
>> When I change my filter to Account = #20:1, the EXPLAIN is
>>
>> {
>> "result": [
>> {
>> "@type": "d",
>> "@version": 0,
>> "fullySortedByIndex": true,
>> "documentReads": 110866,
>> "current": "#41:111016",
>> "documentAnalyzedCompatibleClass": 110866,
>> "recordReads": 110866,
>> "involvedIndexes": [
>> "IX_Contact_EmailAddress"
>> ],
>> "fetchingFromTargetElapsed": 5517,
>> "indexIsUsedInOrderBy": true,
>> "evaluated": 110866,
>> "elapsed": 5514.2456,
>> "resultType": "collection",
>> "resultSize": 100,
>> "@fieldTypes":
>> "documentReads=l,current=x,documentAnalyzedCompatibleClass=l,recordReads=l,involvedIndexes=e,fetchingFromTargetElapsed=l,evaluated=l,elapsed=f"
>> }
>> ],
>> "notification": "Query executed in 5.835 sec. Returned 1 record(s)"
>> }
>>
>> There are 110866 records evaluated and took 5.835 sec.
>>
>> I could not understand what caused a big different here, is it a bug? Any
>> explanation will be very appreciated!
>>
>> My Best,
>> Hung Tran
>>
>>
>> --
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "OrientDB" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
--
---
You received this message because you are subscribed to the Google Groups
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.