To add a detail, value will have an index created for it if it is a primitive (or an “SQL-friendly” type like Date). I don’t think there is an easy way to avoid that. You could use a wrapper for the primitive value, but it will also have some overhead and it’s hard to say whether it will be more efficient than having an index for the value.
Stan From: Amir Akhmedov Sent: 30 января 2018 г. 1:32 To: [email protected] Subject: Re: Index question. Ok, then it makes sense. You cannot pass null into setIndexedTypes(). But if you don't put any @QuerySqlField annotation in value class or declare fields/indexes through Java API then no columns/indexes will be created in SQL storage. On Mon, Jan 29, 2018 at 3:59 PM, Mikael <[email protected]> wrote: Thanks, the reason I need SQL is that my key is not a primitive, it's a class made of 2 int and one String and I need to query on parts of the key and not the entire key, like select all keys where one of the integers is equal to 55 for example. Mikael Den 2018-01-29 kl. 19:05, skrev Amir Akhmedov: Hi Mikael, 1. This is just a warning informing you that Ignite's object serialization will differ from yours Externalizable implementation. By default Ignite will serialize all fields in object and if you want to customize then you need implement Binarylizable interface or set custom serializer as stated in warning message. Even if you did not specify any @QuerySqlField in your object Ignite stores the whole serialized object in SQL table under _val field for internal usage. The open question is why do you need SQL if you are using only key based search? You can make exactly the same using Java Cache API. 2. You can leave Externalizable implementation in the class, it won't hurt. 3. Please check bullet #1, if you don't want indexes then you don't need create them. Thanks, Amir -- Sincerely Yours Amir Akhmedov
