我注意到如果 SQL 查询以使用 --comment 格式的注释开头,我的 sqlite3 查询将花费 375 倍的时间。这是正常行为吗?它是内置 sqlite3 模块中的错误吗?
import pathlib
import sqlite3
import timeit
def test_do(sql):
db_path = pathlib.Path("./test.sqlite3")
con = sqlite3.connect(db_path)
cursor = con.cursor()
table_sql: str = f"""
CREATE TABLE IF NOT EXISTS test (
id INTEGER PRIMARY KEY)"""
cursor.execute(table_sql)
for i in range(1, 43000):
cursor.execute(sql, [i])
con.commit()
db_path.unlink()
sqlslow = f"""
--comment
INSERT INTO "test" ("id") VALUES (?)
"""
sqlfast = f"""
INSERT INTO "test" ("id") VALUES (?)
"""
starttimeslow = timeit.default_timer()
test_do(sqlslow)
print(f"sqlslow: {timeit.default_timer() - starttimeslow}")
starttimefast = timeit.default_timer()
test_do(sqlfast)
print(f"sqlfast: {timeit.default_timer() - starttimefast}")
结果:
sqlslow: 21.521265994
sqlfast: 0.05736106100000171
编辑:我发现 /* */ 样式注释的行为相同。