首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >增强select sqlite查询的性能

增强select sqlite查询的性能
EN

Stack Overflow用户
提问于 2016-01-13 10:18:15
回答 1查看 41关注 0票数 1

在这个sqlite查询中,我有大约11k条记录的返回数据集。此查询中是否存在可帮助提高性能的更改范围。谢谢

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT count(*) as count, easting,northing FROM tableName where site='K' AND is_deleted=0 AND easting !='' AND northing !='' AND easting !=0 AND northing !=0.

下面是我将从中提取记录的表结构:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE "g_livcol" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL,
"accession_no" INTEGER NOT NULL ,
"isLive" VARCHAR(5),
"taxanomic_name" VARCHAR(50),
"genus_name" VARCHAR(50),
"taxanomic_species" VARCHAR(50),
taxanomic_species2 VARCHAR(50),
taxon_is_epithet VARCHAR(50),
taxanomic_cv VARCHAR(50),
sec_key INTEGER,
site VARCHAR(5),
location_key VARCHAR(20),
sub_location1 INTEGER, 
sub_location2 INTEGER,
count_of_loc_key INTEGER,
accession_quantity INTEGER,
canopy INTEGER,
height INTEGER,
easting DOUBLE,
northing DOUBLE, 
created_at DATETIME,
updated_at DATETIME, 
is_deleted BOOL DEFAULT (0))
EN

回答 1

Stack Overflow用户

发布于 2016-01-13 11:25:16

你有没有为它创建索引?我认为最有鉴别力的列是site,所以您需要一个以它开头的索引。

此外,你有它的covering index吗?您只读取了三列,并从相当宽的表中测试了另一列,因此覆盖索引在这里会有所帮助:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create index tableName_i1 on tableName (site, is_deleted, easting, northing, id);

索引是“覆盖”的,因为它包含了查询所需的所有内容。

实际上,由于计数中的"*“,优化器可能没有意识到这一点,所以我建议使用count(id)而不是count(*)。这是相同的,因为id是主键,但它使优化器更清楚地知道它不需要读取任何其他内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34763991

复制
相关文章
Android Sqlite里数据查询性能优化对比
我们在做Android开发时常会用到Sqlite数据库做为本地的缓存库,针对Sqlite数据库的性能优化网上也有不少的文章。
Vaccae
2019/07/25
2.5K0
select 高级查询之子查询
  在 SQL 语言中,一个 SELECT-FROM-WHERE 语句称为一个查询块。当获得一个查询的答案需要多个步骤的操作,首先必须创建一个查询来确定用户不知道但包含在数据库中的值,将一个查询块嵌套在另一个查询块的 WHERE 字句或 HAVING 短语的条件中查询块称为子查询或内层查询。外部的 SELECT 查询语句,称为主查询或外查询。按结果集的行列数不同子查询可以分为 4 种  ♞ 标量子查询(结果集只有一行一列)  ♞ 列子查询(结果集只有一列多行)  ♞ 行子查询(结果集有一行多列)  ♞ 表子查询(结果集一般为多行多列)
Demo_Null
2020/09/28
2.6K0
select 进阶查询
 ① 分组查询中,select 后面只能出现,在 group by 后出现过的列或者聚合函数。  ② where 是在分组前对记录进行筛选,而 having 是在分组结束后的结果里筛选,最后返回最终查询结果。  ③ having 后所接的字段必须经过过滤(即:该字段必须使用),一般与 group by 连用  ④ 分组查询中,若一个字段在一个组内有多个结果,则后一个结果覆盖前一个结果
Demo_Null
2020/09/28
1.2K0
select 查询基础
  如果不查询表中所有的列,尽量避免使用 SELECT *,因为它会进行全表扫描,不能有效利用索引,增大了数据库服务器的负担,以及它与应用程序客户端之间的网络 IO 开销。
Demo_Null
2020/09/28
7800
select 查询基础
select基础查询
select查询 distinct取消重复 create table student( id int not null default 1, name varchar(20) not null default '', chinese float not null default 0.0, english float not null default 0.0, math float not null default 0.0 ) insert into student(id,name,chine
秋名山码神
2022/12/13
3150
select基础查询
mybatisplus select foreach in 的查询
高久峰
2023/07/02
3820
为什么忘记 commit 也会造成 select 查询的性能问题
作者:潇湘隐者 www.cnblogs.com/kerrycode/p/5836015.html 今天遇到一个很有意思的问题,一个开发人员反馈在测试服务器ORACLE数据库执行的一条简单SQL语句非常缓慢,他写的一个SQL没有返回任何数据,但是耗费了几分钟的时间。让我检查分析一下原因,分析解决过后,发现事情的真相有点让人哭笑不得,但是也是非常有意思的。我们先简单构造一下类似的案例,当然只是简单模拟。 假设一个同事A,创建了一个表并初始化了数据(实际环境数据量较大,有1G多的数据),但是他忘记提交了。我们简
顶级程序员
2018/05/03
1K0
为什么忘记 commit 也会造成 select 查询的性能问题
select 高级查询之连接查询
  笛卡尔乘积是指在数学中,两个集合 X 和 Y 的笛卡尔积(Cartesian product),又称直积,表示为 X×Y,第一个对象是 X 的成员而第二个对象是 Y 的所有可能有序对的其中一个成员。假设集合 A={a, b},集合 B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
Demo_Null
2020/09/28
8700
select 高级查询之连接查询
有一个 SQLite 的增强神器
开源项目地址:https://github.com/x2bool/xlite 开源项目作者:x2bool
开源日记
2023/03/10
4320
有一个 SQLite 的增强神器
MyBatis-Select查询
# MyBatis-Select # select 1. public List<Employee> getEmpsByLastNameLike(String lastName); //返回一条记录的map:key就是列名;值就是对应的值 2. public Map<String, Object> getEmpByIdReturnMap(Integer id); @MapKey("id") 3. public Map<Integer, Employee> getEmpMapByLastNameLikeR
Java开发者之家
2021/06/17
4200
SQL 基础-->SELECT 查询
在SQL 开发工具,SQL 语句能选择分号结束(;) .当你运行多个SQL 语句的时候,需要分号
Leshami
2018/08/07
9820
select 进阶查询语句
普通的 select…from 很明显不能满足我们的更细化的查询需求,它除了基本语法外,还可以拓展使用一些判断语法和过滤、分组语法。本文介绍一些 select 的进阶查询语法。其中包括等值连接、不等值连接、外连接(左外连接、右外连接)自连接、层次查询、子查询(相关子查询)等语法。本文所操作的均是 oracle 下 scott 用户下的表。大家可参考查阅。
我与梦想有个约会
2023/10/20
2110
select 进阶查询语句
查询出口增强
SAP增强已经发展过几代了,可参考SAP标准教材 BC425和BC427 简单说SAP的用户出口共有四代。
古道无仙
2021/03/11
7610
mysql 实现select 判断查询
mysql查询A表type字段等于1的num字段合计值和type字段等于2的num字段合计值,
仙士可
2019/12/18
3.1K0
Android 中 SQLite 性能优化
数据库是应用开发中常用的技术,在Android应用中也不例外。Android默认使用了SQLite数据库,在应用程序开发中,我们使用最多的无外乎增删改查。纵使操作简单,也有可能出现查找数据缓慢,插入数据耗时等情况,如果出现了这种问题,我们就需要考虑对数据库操作进行优化了。本文将介绍一些实用的数据库优化操作,希望可以帮助大家更好地在开发过程中使用数据库。
技术小黑屋
2018/09/05
1.2K0
sqlite性能简单測试[通俗易懂]
其做为嵌入式数据库其长处很显著:1.单一数据库文件; 2.轻量型。3.跨平台。4.支持TB级别数据规模;5.不依赖其他软件。
全栈程序员站长
2022/07/08
3.1K0
高级性能测试系列《26. 从mysql中查询出数据写入sqlite中,再从sqlite中查询出数据写入txt文件中。》
jdbc conection configuration:连接池、URL、driverclass、 user、password。
清菡
2022/12/02
4K0
高级性能测试系列《26. 从mysql中查询出数据写入sqlite中,再从sqlite中查询出数据写入txt文件中。》
JAVA中SQL查询语句大全,select多表查询,各种查询
– 查询emp表中的所有部门, 剔除重复的记录, 提示: distinct用于剔除重复值
全栈程序员站长
2022/09/02
2.2K0
JAVA中SQL查询语句大全,select多表查询,各种查询
SELECT 语句中的 子查询(Sub Query)
子查询(Sub Query)或者说内查询(Inner Query),也可以称作嵌套查询(Nested Query),是一种嵌套在其他 SQL 查询的 WHERE 子句中的查询。
一个会写诗的程序员
2018/08/17
3.2K0
点击加载更多

相似问题

如何提高SQLite中SELECT查询的性能?

10

增强当前SQLite查询

11

postgresql查询性能增强

10

提高SQLite SELECT性能

11

基于SQLite的增强查询语法

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文