SQLite Database gives warning automatic index on (column) After upgrading Android L
前端 未结 2 1265
臣服心动
臣服心动 2020-12-13 12:31

I have upgraded my Nexus 7 with Android 5.0 Lollipop, Before that my application going well with SQLite Database but now Whenever I execute any type of quer

相关标签:
2条回答
  • 2020-12-13 13:12

    Automatic indexing was introduced in sqlite 3.7.17. A version of sqlite with this feature was only included in Android L developer preview. This is why you get the message only on Lollipop but not earlier. Even if it is logged as an error, it's really just a message.

    Basically, the automatic indexing comes into play when you're doing lookups on non-indexed columns. sqlite assumes there's so much data that generating a temporary index is cheaper than raw lookup.

    Consider adding explicit, permanent indices for your lookup columns with CREATE INDEX. For example, after your CREATE TABLE:

    CREATE INDEX indexname ON tablename(columnname);
    

    where you can pick tablename(columnname) from the autoindex messages as produced by sqlite.

    If you just want the old behavior back, you can disable auto-indexing with

    PRAGMA automatic_index=off;
    
    0 讨论(0)
  • 2020-12-13 13:20

    This was the top post while i was looking into this problem. Although i have a C# project and it might not be relevant for the OP, i thought it might still be helpfull for someone.

    For those that wonder why the message keeps appearing, although an index was created explicitly; maybe your query is using a different collation.

    I had a table with a text column and a select query with a where statement specifying where name = @var1 COLLATE NOCASE. This triggered the warnings, as the index i had created was default collation.

    Thus, rewriting either the index, or the create table statement, to specify nocase for that column, made the warning disappear.

    0 讨论(0)
提交回复
热议问题