在应用于列的函数上创建索引:适用于一个安装,而不是另一个
Posted
技术标签:
【中文标题】在应用于列的函数上创建索引:适用于一个安装,而不是另一个【英文标题】:CREATE INDEX on a function applied to a column: works on one install, not the other 【发布时间】:2018-04-18 14:51:56 【问题描述】:在 Windows 上执行此操作时(sqlite3.version 为 2.6.0,sqlite3.sqlite_version 为 3.23.1):
import sqlite3, datetime
db = sqlite3.connect(':memory:', detect_types=sqlite3.PARSE_DECLTYPES)
c = db.cursor()
c.execute('CREATE TABLE mytable (id integer, date timestamp)')
c.execute('INSERT INTO mytable VALUES (1, ?)', (datetime.datetime(2018,1,1,12,11,29),))
c.execute('CREATE INDEX id1 ON mytable(JULIANDAY(date))')
它有效(在JULIANDAY(date)
上而不是在date
上具有索引的事实很有用,因为question+answer)。
在 Linux 上做同样的事情(sqlite3.version 是 2.6.0,sqlite3.sqlite_version 是 3.8.2),我得到:
sqlite3.OperationalError: near "(": syntax error
在此版本中是否在 JULIANDAY(date)
上创建索引?
【问题讨论】:
【参考方案1】:根据the documentation,在 SQLite 3.9.0 中引入了为表达式创建索引的功能 - 因此您将无法在您的 linux 机器上安装的 3.8.2 版本中使用它。
【讨论】:
相关问题:***.com/questions/49820873/…以上是关于在应用于列的函数上创建索引:适用于一个安装,而不是另一个的主要内容,如果未能解决你的问题,请参考以下文章