The best you could probably do is load into memory a structure that keeps the employee type for every employee. When the user types some letters of a name to search for you can perform a keys-only query and lookup the employee type in this structure (rather than load the entity)

You would need 2 bits per employee (for 4 types) so even a million employees would only require 250KB of memory (an array of 30K longs) which shouldn't take too long to read from memcache when an instance starts.

You would then need to iterate over every result and count which type the employee is. To optimise this you might cache the counts in memcache of 1 and 2 letter searches. So then you would only need to count on the fly three letter searches i.e. all employees with names starting with "smi"

On 11 Jun 2010, at 20:53, RAVINDER MAAN wrote:

number of employee entities is going to be high .So i guess that possibility of getting more then 1000 employees for any search is quite high.


On Fri, Jun 11, 2010 at 6:56 PM, John Patterson <jdpatter...@gmail.com> wrote:
A lot depends on how many Employee entities you have.

You could do a sub search for each of the 4 employee types and use COUNT to get the results. This will only work up to 1000 employees per employee type.

Twig can execute queries in parallel so this would take no more time than running your original query.

On 11 Jun 2010, at 19:39, RAVINDER MAAN wrote:

Thanks for your reply Ravi
let me explain the entire scenario.I have an employee entity .User can search employees by giving part of name .There are four type of employees .I have to show number of employees matching user search criteria for every type of employee under different tabs.Actual results are to be displayed only if user open that tab.
In SQL term we could write following query

Select count(*) from employee where name like '%<searchname>%' and type ='A' ;

My first problem is that i dint find any equivalent of like operator.Is there any way to do it? Secondly we can not keep record count for each search combination.what will you suggest for this case?
Thanks once again.




On Fri, Jun 11, 2010 at 4:23 PM, Ravi <ping2r...@gmail.com> wrote:
Google app engine designed to work for any numbers of records with in
minimum time, so SQL features like counting the records whenever
needed is not supported.
So you need to take care of such counter by urself at the time of
adding or deleting the records in a table/entity.

If you just want total number of records and dont care if counting
happened in last 24 hours then look into low level api for datastore
statistics, GAE refreshes total count every 24 hours and you can read
the total count from there.

And if you want count of records with some where clause, then you need
to maintain it.

like if u want like this
select count(0) from tb where tb.propA='someValue'

then you may need to create a new entity say counterForTb, and have
few fields entityName and count and where clause columns
and whenevr you add a new record in tb then increase the count of that
record in counter table and on delete decrease it.




Something for google guys
Just realized that all columns are indexed unless we specify to not to
index, and there must be some index meta data/statistics saved
somewhere in google data stores about index(like total records
matching to this index). And if that stats can be accessible through
some APIs then we may be able to get total count just by reading data
from indexes stats.
Is this something feasible?








On Jun 11, 11:39 am, RAVINDER MAAN <rsmaan...@gmail.com> wrote:
> How can we get records count for a query in JDO.
> In sql we have select count(*) from <table_name>
> i want to get number of records returned by a query. what is the
> efficient way to do that.One option is to use size() function .I think
> it is not best way.

--
You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-java@googlegroups.com . To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en .




--
Regards,
Ravinder Singh Maan


--
You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-java@googlegroups.com . To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en .


--
You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-java@googlegroups.com . To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en .



--
Regards,
Ravinder Singh Maan


--
You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-java@googlegroups.com . To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en .

--
You received this message because you are subscribed to the Google Groups "Google 
App Engine for Java" group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to