无忧启动论坛

标题: 请教SQLite多数据库attach附加后的索引如何使用? [打印本页]

作者: 红毛樱木    时间: 2021-1-10 17:05
标题: 请教SQLite多数据库attach附加后的索引如何使用?
最近刚开始接触数据库,请教大佬们

大佬们,请教SQLite的语句,能不能实现下面的功能?
先打开一个数据库:C:\a.scindex
然后附加上另外一个数据库
attach 'c:\b.scindex' as 'test1';
假本来查询语句是
SELECT * FROM COMPANY INDEXED BY ID_index  WHERE (ID = '456789ABC' COLLATE NOCASE);

链接后两个数据库要怎么写查询语句?
两个数据库里的表名称都是COMPANY,结构完全一模一样,两个都有索引ID_index
作者: CodeHz    时间: 2021-1-10 18:22
select * from test1.company 返回attach的
select * from main.company 返回打开的.
索引也是类似语法
就这样,可以混合在同一个查询里面,通过union语句

参考:
https://sqlite.org/lang_attach.html
https://www.sqlite.org/lang_select.html


作者: 红毛樱木    时间: 2021-1-10 19:31
CodeHz 发表于 2021-1-10 18:22
select * from test1.company 返回attach的
select * from main.company 返回打开的.
索引也是类似语法

感谢  刚才已经摸索出来了。
作者: 红毛樱木    时间: 2021-1-10 22:13
CodeHz 发表于 2021-1-10 18:22
select * from test1.company 返回attach的
select * from main.company 返回打开的.
索引也是类似语法

请教一下 索引也是这种写法吗?

select * from test1.company INDEXED by test1.a_index
select * from main.company INDEXED by main.a_index

作者: CodeHz    时间: 2021-1-11 11:19
红毛樱木 发表于 2021-1-10 22:13
请教一下 索引也是这种写法吗?

select * from test1.company INDEXED by test1.a_index

(首先你这里没有必要指定索引。。。SQLite会自动选择正确的索引的(
其次我前面说的是有索引也用这种语法,不是说索引也用scheme.table的方法(是我没说清楚)
根据文档,索引必须和表在同一个库里,所以不用也不能指定scheme名字
见 https://sqlite.org/lang_indexedby.html
作者: CodeHz    时间: 2021-1-11 11:21
SQLite3里,用indexed by的主要功能是在数据库结构发生变化时报错,没有任何性能加速的功能)
作者: 红毛樱木    时间: 2021-1-11 11:27
CodeHz 发表于 2021-1-11 11:21
SQLite3里,用indexed by的主要功能是在数据库结构发生变化时报错,没有任何性能加速的功能)

啊?那我创建索引不是没有任何意义了么
我还以为索引可以加速呢。
那这样的话,是不是创建索引对于我这种需求来说没有意义了。
作者: CodeHz    时间: 2021-1-11 11:35
本帖最后由 CodeHz 于 2021-1-11 11:38 编辑
红毛樱木 发表于 2021-1-11 11:27
啊?那我创建索引不是没有任何意义了么
我还以为索引可以加速呢。
那这样的话,是不是创建索引对于我这 ...

创建索引有意义,但是查询中指定索引没加速意义(别理解反了)
意思是你创建了正确的索引就已经能起到加速作用了,在查询中指定是多此一举(除非你想要确保查询一定用到了索引,用不到就报错)


作者: 红毛樱木    时间: 2021-1-11 11:40
CodeHz 发表于 2021-1-11 11:35
创建索引有意义,但是查询中指定索引没加速意义(别理解反了)
意思是你创建了正确的索引就已经能起到加 ...

哦哦,明白了。感谢耐心指点
作者: 红毛樱木    时间: 2021-5-26 18:31
CodeHz 发表于 2021-1-11 11:35
创建索引有意义,但是查询中指定索引没加速意义(别理解反了)
意思是你创建了正确的索引就已经能起到加 ...

大神,在请教下。
SQLite3在多线程下的情况。
数据库我只需要执行读的操作,用多线程的话
一开始执行时,设置全局的线程模式为SQLITE_CONFIG_MULTITHREAD,然后参数中传入SQLITE_OPEN_FULLMUTEX,速度还是不理想,请问 有没有什么机关




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3