Hi Siang,

I got the point, it seems there is an issue related to property case
sensitivity.
You are executing the query with "salary >= 1000..." (lowercase) but you
are setting property value with  .Set("Salary", employee.Salary) (first
letter uppercase).

Could you try to normalize attribute names and try it again? Attribute
names are not supposed to be case sensitive, but apparently the query
optimizer is failing to recognize them in this case.

Luigi




2015-01-30 10:51 GMT+01:00 Siang Hwee Goh <gohsiangh...@gmail.com>:

> Hi Luigi,
>
> Would you mind elaborating what kind of small test case you refer to? Do
> you mean sample source code to produce it? I just have a very simple class
> with few properties shown below. I just insert it with 1.2 million loop and
> the code as follow. Then I go to the web interface and type the SELECT
> command. It is very fast if I only filter 1 record. however, it is slow and
> keep prompting me more than 50,000 records kind of message and asked me to
> do indexing. Even though the select criteria shall only return 1 result.
>
> public static void TestOrientDB()
>         {
>             var GlobalTestDatabaseName = "TestDatabaseName";
>             var GlobalTestDatabaseType = ODatabaseType.Graph;
>             var GlobalTestDatabaseAlias = "TestDatabaseNameAlias";
>
>             _server = new OServer(_hostname, _port, _rootUserName,
> _rootUserParssword);
>                OClient.CreateDatabasePool(
>                 _hostname,
>                 _port,
>                 GlobalTestDatabaseName,
>                 GlobalTestDatabaseType,
>                 _username,
>                 _password,
>                 10,
>                 GlobalTestDatabaseAlias
>             );
>             DateTime startTime = DateTime.Now;
>             Console.WriteLine("Start Time: " +
> startTime.ToLongTimeString());
>
>             using (ODatabase database = new
> ODatabase("TestDatabaseNameAlias"))
>             {
>
>                 for (int count = 1; count <= 1000000; count++)
>                 {
>                     var employee = new Employee();
>                     employee.Id = "1234567890123456789012345678901234";
>                     employee.Key = "1234567";
>                     employee.Revision = "1234567";
>                     employee.Name = "Mohamad Abu
> Bakar123456789012345678911234dddddd";
>                     employee.IcNumber = "1234567-12-3444";
>                     employee.Department = "IT Department";
>                     employee.Height = 1234;
>                     employee.DateOfBirth = new DateTime(2015, 1, 27, 3,
> 33, 3);
>                     employee.Salary = (decimal)3333.123456789 + (count *
> 10);
>
>                     database.Insert().Into("Employee").Set("Id",
> employee.Id)
>                                 .Set("Key", employee.Key)
>                                 .Set("Revision", employee.Revision)
>                                 .Set("Name", employee.Name)
>                                 .Set("IcNumber", employee.IcNumber)
>                                 .Set("Department", employee.Department)
>                                 .Set("Height", employee.Height)
>                                 .Set("DateOfBirth", employee.DateOfBirth)
>                                 .Set("Salary", employee.Salary).Run();
>
>
>
>                 }
>             }
>
>
>
>             DateTime endTime = DateTime.Now;
>             TimeSpan duration = endTime - startTime;
>             Console.WriteLine("End Time: " + endTime.ToLongTimeString());
>             Console.WriteLine("Total time taken: " +
> duration.TotalSeconds);
>         }
>
>
>  public class Employee
>     {
>         public string Id { get; set; }
>
>         public string Key { get; set; }
>
>         public string Revision { get; set; }
>
>
>         public string Name { get; set; }
>
>         public string IcNumber { get; set; }
>
>         public string Email { get; set; }
>
>         public string Department { get; set; }
>         public double Height { get; set; }
>
>         public DateTime DateOfBirth { get; set; }
>
>         public decimal Salary { get; set; }
>     }
>
> On Friday, January 30, 2015 at 5:31:29 PM UTC+8, Luigi Dell'Aquila wrote:
>>
>> Hi Siang,
>>
>> all hash indexes do not support range queries (they are based on hash of
>> course, not on a tree).
>> But standard NOT_UNIQUE should, so if it doesn't work I suggest you to
>> write a small test case or all the steps to replicate the problem, we'll be
>> happy to look at that.
>>
>> Thanks
>>
>>
>>
>> 2015-01-30 9:55 GMT+01:00 Siang Hwee Goh <gohsia...@gmail.com>:
>>
>>> Hi Luigi,
>>>
>>> I have tried on NOT_UNIQUE and NOT_UNIQUE_HASH_INDEX. Both also not
>>> working. Based on my understanding from https://github.com/
>>> orientechnologies/orientdb/wiki/Indexes, I thought that will be the
>>> most fit at my scenario. Do you have any suggestion? Thanks.
>>>
>>> On Friday, January 30, 2015 at 4:43:25 PM UTC+8, Luigi Dell'Aquila wrote:
>>>>
>>>> Hi Siang,
>>>>
>>>> which kind of index did you define? Not all types of index support
>>>> range queries
>>>>
>>>> Luigi
>>>>
>>>>
>>>> 2015-01-30 9:05 GMT+01:00 Siang Hwee Goh <gohsia...@gmail.com>:
>>>>
>>>>> I am evaluating OrientDB right now and I tried to inserts 1.2 million
>>>>> simple records inside one of the database. It is an Employee class with
>>>>> just few columns.
>>>>>
>>>>> When I tried to perform the query on SELECT * FROM Employee WHERE
>>>>> salary = 1343 it was very slow and ended up no result being returned. I 
>>>>> did
>>>>> some indexing and now it became very fast.
>>>>> However, when I tried to again change the query a little bit to this
>>>>> SELECT * FROM Employee WHERE salary >= 3330 AND salary <= 3330 it ended up
>>>>> return nothing again and prompted me the transactions is more than 50,000
>>>>> records and ... As a matter of fact, there is only 1 record inside which
>>>>> fulfill this search criteria. Could anyone let me know how to tune the
>>>>> performance in such case? Thanks.
>>>>>
>>>>> --
>>>>>
>>>>> ---
>>>>> 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 orient-databa...@googlegroups.com.
>>>>> 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 orient-databa...@googlegroups.com.
>>> 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 orient-database+unsubscr...@googlegroups.com.
> 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 orient-database+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to