<span id="result_box" class="short_text"><span style="background-color: rgb(255, 255, 255);" title="aprecio mucho tu respuestas, muy completas y claras">I appreciate your answers, very comprehensive and clear.<br><br>Carlos Balderas<br>
</span></span><br><div class="gmail_quote">On Tue, Apr 27, 2010 at 5:00 AM,  <span dir="ltr"><<a href="mailto:cubicweb-request@lists.cubicweb.org">cubicweb-request@lists.cubicweb.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Send Cubicweb mailing list submissions to<br>
        <a href="mailto:cubicweb@lists.cubicweb.org">cubicweb@lists.cubicweb.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="http://lists.cubicweb.org/mailman/listinfo/cubicweb" target="_blank">http://lists.cubicweb.org/mailman/listinfo/cubicweb</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:cubicweb-request@lists.cubicweb.org">cubicweb-request@lists.cubicweb.org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:cubicweb-owner@lists.cubicweb.org">cubicweb-owner@lists.cubicweb.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of Cubicweb digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1.  Re: About RQL language and its correct use (Julien Jehannet)<br>
   2. Re: About RQL language and its correct use (Sylvain Th?nault)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Tue, 27 Apr 2010 10:45:41 +0200<br>
From: Julien Jehannet <<a href="mailto:julien.jehannet@logilab.fr">julien.jehannet@logilab.fr</a>><br>
Subject: [Cubicweb]  Re: About RQL language and its correct use<br>
To: Carlos Balderas <<a href="mailto:carlos.balderas@gmail.com">carlos.balderas@gmail.com</a>><br>
Cc: <a href="mailto:cubicweb@lists.cubicweb.org">cubicweb@lists.cubicweb.org</a><br>
Message-ID: <<a href="mailto:20100427084541.GA7125@crater.logilab.fr">20100427084541.GA7125@crater.logilab.fr</a>><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
> * Carlos Balderas <<a href="mailto:carlos.balderas@gmail.com">carlos.balderas@gmail.com</a>> [26-avr-2010 22:53]:<br>
> Hello List!<br>
><br>
> Writting good RQL sentences.<br>
Good topic :)<br>
<br>
> Is it better to write rql sentence like:<br>
> ANY X WHERE X is "EntityType", X eid "EID"<br>
> or just something like this:<br>
> ANY X WHERE X eid "EID"<br>
<br>
In terms of performance, I think the latter could be a bit faster<br>
but for readibility issue, I will vote for the former.<br>
<br>
> ANY X WHERE X is "EntityType", X in_state Y, Y is State, Y name<br>
> "SOMESTATENAME"<br>
> or just something like this:<br>
> ANY X WHERE X is "EntityType", X in_state Y, Y name "SOMESTATENAME"<br>
> or if X is the only entity type that can have "SOMESTATENAME" state<br>
> ANY X WHERE X in_state Y, Y name "SOMESTATENAME"<br>
<br>
The last request could be *huge* because 'name' attribute is widespread<br>
among entities. For the same reason as above, I will tend to always<br>
specified the entity type. But in this example, it will be a performance<br>
boost because the internal generated SQL will only concern a table.<br>
<br>
> Using "is" sometimes is necesary when we need to filter certain types of<br>
> entities in rql sentences and this kind of structure sometimes helps the<br>
> programmer to understand quickly what we are looking for in the rql query,<br>
> but other times make bigger rql queries and I would like to know if this can<br>
> help to improve or adversely affect the rql performance in some way.<br>
<br>
My advice should be to always keep the "is" constraint even if it makes<br>
the request larger.<br>
<br>
Note: I'm not an expert. I'm just sharing that in case if someone could<br>
correct me if I'm wrong.<br>
--<br>
Julien JEHANNET                                          LOGILAB, Paris (France)<br>
<a href="http://www.cubicweb.org" target="_blank">http://www.cubicweb.org</a>                 CubicWeb, le cadriciel du web s?mantique<br>
<a href="http://www.logilab.org" target="_blank">http://www.logilab.org</a>             D?p?t des logiciels libres con?us par Logilab<br>
<a href="http://www.logilab.fr" target="_blank">http://www.logilab.fr</a>       Informatique scientifique & Gestion de connaissances<br>
-------------- next part --------------<br>
A non-text attachment was scrubbed...<br>
Name: not available<br>
Type: application/pgp-signature<br>
Size: 197 bytes<br>
Desc: Digital signature<br>
URL: <<a href="http://lists.cubicweb.org/pipermail/cubicweb/attachments/20100427/d2895e34/attachment-0001.pgp" target="_blank">http://lists.cubicweb.org/pipermail/cubicweb/attachments/20100427/d2895e34/attachment-0001.pgp</a>><br>

<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Tue, 27 Apr 2010 11:27:36 +0200<br>
From: Sylvain Th?nault <<a href="mailto:sylvain.thenault@logilab.fr">sylvain.thenault@logilab.fr</a>><br>
Subject: Re: [Cubicweb] About RQL language and its correct use<br>
To: Carlos Balderas <<a href="mailto:carlos.balderas@gmail.com">carlos.balderas@gmail.com</a>>,<br>
        <a href="mailto:cubicweb@lists.cubicweb.org">cubicweb@lists.cubicweb.org</a><br>
Message-ID: <<a href="mailto:20100427092736.GC2691@lupus.logilab.fr">20100427092736.GC2691@lupus.logilab.fr</a>><br>
Content-Type: text/plain; charset=utf-8<br>
<br>
On 27 avril 10:45, Julien Jehannet wrote:<br>
> > * Carlos Balderas <<a href="mailto:carlos.balderas@gmail.com">carlos.balderas@gmail.com</a>> [26-avr-2010 22:53]:<br>
> > Hello List!<br>
> ><br>
> > Writting good RQL sentences.<br>
> Good topic :)<br>
><br>
> > Is it better to write rql sentence like:<br>
> > ANY X WHERE X is "EntityType", X eid "EID"<br>
> > or just something like this:<br>
> > ANY X WHERE X eid "EID"<br>
<br>
1. Unless you can't, eg rql in an url for instance, *always* use<br>
   named argument.<br>
2. We usually don't a type restriction when you have an eid restriction<br>
3. entity types and integers shouldn't be quoted<br>
<br>
So the canonical form for your query is:<br>
<br>
 execute('Any X WHERE X eid %(x)s', {'x': EID})<br>
<br>
> > ANY X WHERE X is "EntityType", X in_state Y, Y is State, Y name<br>
> > "SOMESTATENAME"<br>
> > or just something like this:<br>
> > ANY X WHERE X is "EntityType", X in_state Y, Y name "SOMESTATENAME"<br>
> > or if X is the only entity type that can have "SOMESTATENAME" state<br>
> > ANY X WHERE X in_state Y, Y name "SOMESTATENAME"<br>
<br>
in such case, the type restriction may be valuable since it deambiguify<br>
the query and may (depending on other caracteristic of that query) avoid<br>
an UNION on several sql table.<br>
<br>
So the canonical form is:<br>
<br>
  execute('Any X WHERE X is EntityType, X in_state Y, Y name %(state)s',<br>
          {'state': 'SOMESTATENAME'})<br>
<br>
Also, you should add the type restriction if you want to be sure that<br>
you wont get some other entity types when you'll add a new SOMESTATENAME<br>
state for that other entity types.<br>
<br>
> The last request could be *huge* because 'name' attribute is widespread<br>
> among entities. For the same reason as above, I will tend to always<br>
> specified the entity type. But in this example, it will be a performance<br>
> boost because the internal generated SQL will only concern a table.<br>
<br>
no, because 'X in_state Y' reduces possible types for Y to State entities.<br>
<br>
And take care, as I said above, adding the entity type may not be a<br>
performance boost but a penalty.<br>
<br>
> > Using "is" sometimes is necesary when we need to filter certain types of<br>
> > entities in rql sentences and this kind of structure sometimes helps the<br>
> > programmer to understand quickly what we are looking for in the rql query,<br>
> > but other times make bigger rql queries and I would like to know if this can<br>
> > help to improve or adversely affect the rql performance in some way.<br>
<br>
1. Don't add type restriction for variable with eid specified<br>
2. Add type restriction when your query has to be deambiguified<br>
3. Add type restriction if you really want to filter out other entity types<br>
   that may comes at some point (now or in the future)<br>
<br>
--<br>
Sylvain Th?nault                               LOGILAB, Paris (France)<br>
Formations Python, Debian, M?th. Agiles: <a href="http://www.logilab.fr/formations%0AD?veloppement" target="_blank">http://www.logilab.fr/formations<br>
D?veloppement</a> logiciel sur mesure:       <a href="http://www.logilab.fr/services" target="_blank">http://www.logilab.fr/services</a><br>
CubicWeb, the semantic web framework:    <a href="http://www.cubicweb.org" target="_blank">http://www.cubicweb.org</a><br>
<br>
<br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
Cubicweb mailing list<br>
<a href="mailto:Cubicweb@lists.cubicweb.org">Cubicweb@lists.cubicweb.org</a><br>
<a href="http://lists.cubicweb.org/mailman/listinfo/cubicweb" target="_blank">http://lists.cubicweb.org/mailman/listinfo/cubicweb</a><br>
<br>
<br>
End of Cubicweb Digest, Vol 14, Issue 10<br>
****************************************<br>
</blockquote></div><br>