无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4555|回复: 9
打印 上一主题 下一主题

[求助] 请教SQLite多数据库attach附加后的索引如何使用?

  [复制链接]
跳转到指定楼层
1#
发表于 2021-1-10 17:05:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近刚开始接触数据库,请教大佬们

大佬们,请教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
2#
发表于 2021-1-10 18:22:00 | 只看该作者
select * from test1.company 返回attach的
select * from main.company 返回打开的.
索引也是类似语法
就这样,可以混合在同一个查询里面,通过union语句

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

点评

请教一下 索引也是这种写法吗? select * from test1.company INDEXED by test1.a_index select * from main.company INDEXED by main.a_index  详情 回复 发表于 2021-1-10 22:13
感谢 刚才已经摸索出来了。  详情 回复 发表于 2021-1-10 19:31
回复

使用道具 举报

3#
 楼主| 发表于 2021-1-10 19:31:41 | 只看该作者
CodeHz 发表于 2021-1-10 18:22
select * from test1.company 返回attach的
select * from main.company 返回打开的.
索引也是类似语法

感谢  刚才已经摸索出来了。
回复

使用道具 举报

4#
 楼主| 发表于 2021-1-10 22:13:54 | 只看该作者
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

点评

(首先你这里没有必要指定索引。。。SQLite会自动选择正确的索引的( 其次我前面说的是有索引也用这种语法,不是说索引也用scheme.table的方法(是我没说清楚) 根据文档,索引必须和表在同一个库里,所以不用也不  详情 回复 发表于 2021-1-11 11:19
回复

使用道具 举报

5#
发表于 2021-1-11 11:19:36 来自手机 | 只看该作者
红毛樱木 发表于 2021-1-10 22:13
请教一下 索引也是这种写法吗?

select * from test1.company INDEXED by test1.a_index

(首先你这里没有必要指定索引。。。SQLite会自动选择正确的索引的(
其次我前面说的是有索引也用这种语法,不是说索引也用scheme.table的方法(是我没说清楚)
根据文档,索引必须和表在同一个库里,所以不用也不能指定scheme名字
见 https://sqlite.org/lang_indexedby.html
回复

使用道具 举报

6#
发表于 2021-1-11 11:21:24 来自手机 | 只看该作者
SQLite3里,用indexed by的主要功能是在数据库结构发生变化时报错,没有任何性能加速的功能)

点评

啊?那我创建索引不是没有任何意义了么 我还以为索引可以加速呢。 那这样的话,是不是创建索引对于我这种需求来说没有意义了。  详情 回复 发表于 2021-1-11 11:27
回复

使用道具 举报

7#
 楼主| 发表于 2021-1-11 11:27:02 | 只看该作者
CodeHz 发表于 2021-1-11 11:21
SQLite3里,用indexed by的主要功能是在数据库结构发生变化时报错,没有任何性能加速的功能)

啊?那我创建索引不是没有任何意义了么
我还以为索引可以加速呢。
那这样的话,是不是创建索引对于我这种需求来说没有意义了。

点评

创建索引有意义,但是查询中指定索引没加速意义(别理解反了)  详情 回复 发表于 2021-1-11 11:35
回复

使用道具 举报

8#
发表于 2021-1-11 11:35:50 来自手机 | 只看该作者
本帖最后由 CodeHz 于 2021-1-11 11:38 编辑
红毛樱木 发表于 2021-1-11 11:27
啊?那我创建索引不是没有任何意义了么
我还以为索引可以加速呢。
那这样的话,是不是创建索引对于我这 ...

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

点评

大神,在请教下。 SQLite3在多线程下的情况。 数据库我只需要执行读的操作,用多线程的话 一开始执行时,设置全局的线程模式为SQLITE_CONFIG_MULTITHREAD,然后参数中传入SQLITE_OPEN_FULLMUTEX,速度还是不理想  详情 回复 发表于 2021-5-26 18:31
哦哦,明白了。感谢耐心指点  详情 回复 发表于 2021-1-11 11:40
回复

使用道具 举报

9#
 楼主| 发表于 2021-1-11 11:40:56 | 只看该作者
CodeHz 发表于 2021-1-11 11:35
创建索引有意义,但是查询中指定索引没加速意义(别理解反了)
意思是你创建了正确的索引就已经能起到加 ...

哦哦,明白了。感谢耐心指点
回复

使用道具 举报

10#
 楼主| 发表于 2021-5-26 18:31:57 | 只看该作者
CodeHz 发表于 2021-1-11 11:35
创建索引有意义,但是查询中指定索引没加速意义(别理解反了)
意思是你创建了正确的索引就已经能起到加 ...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-8-6 01:36

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表