1. Check the generated SQL

// Cast to ICacheQueryable
var cacheQueryable = (ICacheQueryable) query;

// Get resulting fields query
SqlFieldsQuery fieldsQuery = cacheQueryable.GetFieldsQuery();

// Examine generated SQL
Console.WriteLine(fieldsQuery.Sql);


2. Try EXPLAIN and other suggestions from
https://ignite.apache.org/docs/latest/SQL/sql-tuning

3. Is there an index on CountryCode?

4. Case-insensitive comparison might be inefficient. A better approach is
to store lower/uppercase value in cache, and then using lower/upper
criteria for search

On Tue, Nov 5, 2024 at 1:08 PM Charlin S <charli...@hotelhub.com> wrote:

> Hi  Pavel,
> Thanks for your email. it reduces to 9 seconds after removing AsParallel.
> Please let me know if there are any more options to get good performance.
>
> Regards,
> Charlin
>
> On Tue, 5 Nov 2024 at 13:31, Pavel Tupitsyn <ptupit...@apache.org> wrote:
>
>> Hi, "AsParallel" is the problem, it causes the entire data set to be
>> loaded locally before filtering.
>>
>> Remove it so that the LINQ expression can be translated into Ignite SQL
>> and executed more efficiently.
>>
>> https://ignite.apache.org/docs/latest/net-specific/net-linq
>>
>> On Tue, Nov 5, 2024 at 8:58 AM Charlin S <charli...@hotelhub.com> wrote:
>>
>>> Hi All,
>>>
>>> I am trying Ignit.Net LINQ for the first time and seeing very slowness
>>> with my linq query taking 13-15 seconds. Test model having 550,000 records
>>> my query as below
>>> TestModel having index for CountryCode field.
>>> ICache<string, TestModel> cache = ignite.GetCache<string,
>>> TestModel>(CacheName);
>>> IQueryable<ICacheEntry<string, TestModel>>  igniteQuerable  =
>>> cache.AsCacheQueryable();
>>> igniteQuerable.AsParallel()
>>>             .Where(x=>string.Equals(x.Value.CountryCode, criteria.
>>> CountryCode, StringComparison.CurrentCultureIgnoreCase))
>>>             .Select(x => x.Key).ToList();
>>>
>>>
>>> Regards,
>>> Charlin
>>>
>>>

Reply via email to