【发布时间】:2017-02-20 02:02:15
【问题描述】:
我有一个 sqlite 数据库,并且在我的 C# 项目中使用 System.Data.SQLite。
我的要求是:
SELECT d1.* FROM DYN_table as d1 INNER JOIN ( SELECT id_bill, ordre_phase, type, MAX(valeur) maximum FROM DYN_table WHERE id_customer=347 AND type IN (1,5,2) GROUP BY id_bill, ordre_phase, type) as d2 ON d1.type = d2.type AND d1.valeur = d2.maximum AND d1.ordre_phase=d2.ordre_phase AND d1.id_bill=d2.id_bill WHERE d1.id_customer=347 AND d1.type IN (1,5,2)
请求有效,但我收到以下警告:
SQLite warning (284): automatic index on sqlite_sq_1E5A8EC0(id_bill)
当我使用“EXPLAIN QUERY PLAN”尝试我的请求时,我看到最后一步是:
SEARCH SUBQUERY 1 AS d2 USING AUTOMATIC COVERING INDEX (id_bill=? AND ordre_phase=? AND type=?)
但是这个表中有一个 id_bill 的索引,我拥有的所有索引: -主键:id_player、id_bill、ordre_phase、类型 -类型 -id_player -ordre_phase -id_competition
我尝试使用 id_bill、ordre_phase 和 type 创建索引,但分析中的“使用自动覆盖索引”仍然相同。
我错过了什么吗?
【问题讨论】: