Re: Record counts...

From: Jonathan Carlson (Jonathan.Carlso..atun.com)
Date: Wed Jun 15 2005 - 14:45:12 EDT

  • Next message: Andrus Adamchik: "Re: Record counts..."

    This brings up an interesting point that I've been meaning to ask about.
     

    When using a paging factor on a result set, I think I remember it doing
    a full query (including all fields) just to find out how many total rows
    could be returned before it queries for a subset of those rows. And it
    does this for each page I request.

    Is there a more efficient way, or has this way been demonstrated to be
    almost as fast as doing a count(*)?

    - Jonathan

    >>> andru..bjectstyle.org 2005-06-14 4:13:09 PM >>>
    Oh yeah, and as Mike pointed out you should call

      query.setFetchingDataRows(true);

    To tell Cayenne that the fetch result shouldn't be converted to
    DataObjects.

    Andrus

    > No, SQLTemplate is actually used to run arbitrary SQL. In some cases
    the
    > result can be mapped to an entity, but in most it will be just that -
    a
    > list of Map objects with each Map corresponding to a result set data.
    So a
    > count query would look like this:
    >
    > String sql = "SELECT COUNT(*) FROM SOME_TABLE"
    > DataMap queryRoot =
    > context.getEntityResolver().getDataMap("data_map_name");
    > SQLTemplate query = new SQLTemaplate(queryRoot, sql, true);
    > Map singleRow = (Map) context.performQuery(query).get(0);
    > Number count = (Number) singleRow.values().next();
    >
    > As this is a bit too verbose, 1.2 will likely encapsulate this code
    in a
    > generic utility class. For now you can create your own.
    >
    > Andrus
    >
    >
    >
    >> I read through that documentation, but it doesn't really appear to
    do
    >> anything different then the normal SelectQuery besdies being able
    to
    >> write it in SQL. I was wanting to do something like SELECT COUNT(*)
    >> FROM Object and just got the int result, with out loading all the
    >> child records etc.
    >>
    >> Just reading the docs there it doesn't appear to let me do
    something
    >> like
    >> that.
    >>
    >> -Nick
    >>
    >> On 6/14/05, Mike Kienenberger <mkienen..laska.net> wrote:
    >>> Nick Stuart <nicholas.stuar..mail.com> wrote:
    >>> > This should be an easy one. I basically just want to find out
    how
    >>> many
    >>> > objects of a certain type there are. Easy to do with a
    SelectQuery
    >>> and
    >>> > user List.size() but does the cause any kind of performance
    issues?
    >>> > Just thinking if these objects have child objects, which has
    more
    >>> > child objects, will it pull all those when I Select the parent?
    >>>
    >>> If you only want the count and don't want to load any objects, just
    use
    >>> SQLTemplate.
    >>>
    >>> http://www.objectstyle.org/cayenne/userguide/fetch/sqltemplate.html

    >>>
    >>
    >
    >

    ______________________________________________________________________
    This email has been scanned by the MessageLabs Email Security System.
    For more information please visit http://www.messagelabs.com/email
    ______________________________________________________________________

    ______________________________________________________________________
    This email and any files transmitted with it are confidential and
    intended solely for the use of the individual or entity to whom they
    are addressed. If you have received this email in error please notify
    the system manager.

    Katun Corporation -- www.katun.com
    _____________________________________________________________________



    This archive was generated by hypermail 2.0.0 : Wed Jun 15 2005 - 14:45:58 EDT