我有一个关于 sqlite 应用程序的查询
SELECT * FROM compounds c JOIN spectraData s ON c.rowid = s.compoundID
WHERE s.compoundID = (SELECT compoundID FROM spectraData WHERE mz = 171);
有两个表结构为
CREATE TABLE compounds (name VARCHAR(200), cas VARCHAR(15), formula VARCHAR(100), peakProduct INT)
CREATE TABLE spectraData (compoundID INT, mz INT, intensity INT)
分别有 101,595 和 20,985,713 行和一个索引:
CREATE INDEX mz_sort ON spectraData ("mz")
当我使用查询时,s.compoundID = (SELECT ...
它需要 5.6 毫秒,但如果代码更改为s.compoundID IN (SELECT ...
它会上升到 44.8 毫秒。为什么两者之间有如此大的差异?
我认为该in
命令会比=
. 关于为什么会这样的任何想法?是否有另一种方式来构建我的查询?