gpt4 book ai didi

sql - SQLite中列的一部分上的索引

转载 作者:行者123 更新时间:2023-12-03 18:41:52 28 4
gpt4 key购买 nike

在SQLite中可能执行以下操作:

create INDEX idx on mytable (synopsis(20));


换句话说,用比全文本字段少的索引编制索引吗?这在长文本字段上非常有用,在长文本字段中,我不想将所有内容都索引到内存中(索引本身可能比整个表占用更多空间)。

最佳答案

您似乎正在寻找index on expression


使用CREATE INDEX语句在一个或多个表达式上创建新索引,就像在列上创建索引一样。唯一的区别是表达式被列为要索引的元素,而不是列名。


考虑:

CREATE INDEX idx ON mytable(SUBSTR(synopsis, 1, 20)); 


请注意,如文档中所述,sqlite查询计划程序要考虑该索引,您需要使用创建索引时所使用的完全相同的表达式。

因此此查询将使用索引:

SELECT * FROM mytable WHERE SUBSTR(synopsis, 1, 20) = 'a text with 20 chars';


虽然通常不会:

SELECT * FROM mytable WHERE synopsis LIKE 'a text with 20 chars%';


注意:是的, 'a text with 20 chars'为20个字符长...

关于sql - SQLite中列的一部分上的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58070733/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com