SQLite索引用于定位NULL时会降低性能

时间:2018-07-24 00:39:11

标签: sqlite

我在Python中使用SQLite时观察到以下现象。假设有一个 var array = [1, 2, 3, 4, 5]; var str = "String"; function isArray(obj){ return obj.constructor === Array; } console.log("array is an Array: "+isArray(array)); console.log("str is an Array: " + isArray(str));,其中有几列;它的主键是table,并且没有其他索引。我想找到前5个a,其中列a为NULL:

b

运行此查询1000次需要0.46s。然后,我为SELECT a FROM table WHERE b ISNULL ORDER BY a ASC LIMIT 5; 添加了一个索引,但是现在运行1000次相同的查询需要3.86秒。我不明白为什么在这种情况下b的索引实际上会使查询变慢。我想知道是否根本没有索引NULL。

我通过对ba而不是仅对b进行索引来重复了相同的实验,结果是0.25s。超过0.46s的改进似乎表明对NULL 进行了索引(但是出于某种原因,仅对b进行索引会很麻烦)。谁能解释这个发现?

1 个答案:

答案 0 :(得分:-1)

您如何安排时间?在Python中?

尝试直接在查询上直接使用EXPLAIN语句。

https://www.sqlite.org/lang_explain.html