在应用于列的函数上创建索引:适用于一个安装,而不是另一个

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/…

以上是关于在应用于列的函数上创建索引:适用于一个安装,而不是另一个的主要内容,如果未能解决你的问题,请参考以下文章

避免将函数应用于索引列

DolphinDB 数据库中每一行的所有列的总和

python pandas-将带有两个参数的函数应用于列

计算 SQL 表中关于列的相同记录

[R]:根据条件行位置将函数应用于列

在 pandas 中将 lambda 函数应用于列失败