易截截图软件、单文件、免安装、纯绿色、仅160KB

SQLite的查询优化

本篇文章来源于:开发学院 http://edu.codepub.com   原文链接:http://edu.codepub.com/2009/0825/14358.php
SQLite是个典型的嵌入式DBMS,它有很多优点,它是轻量级的,在编译之后很小,其中一个原因就是在查询优化方面比较简单,它只是运用索引机制来进行优化的,经过对SQLite的查询优化的分析以及对源代码的研究,我将SQLite的查询优总结
SQLite是个典型的嵌入式DBMS,它有很多优点,它是轻量级的,在编译之后很小,其中一个原因就是在查询优化方面比较简单,它只是运用索引机制来进行优化的,经过对SQLite的查询优化的分析以及对源代码的研究,我将SQLite的查询优总结如下:
一、影响查询性能的因素:
1. 对表中行的检索数目,越小越好
2. 排序与否。
3. 是否要对一个索引。
4. 查询语句的形式
二、几个查询优化的转换
1. 对于单个表的单个列而言,如果都有形如T.C=expr这样的子句,并且都是用OR操作符连接起来,形如: x = expr1 OR expr2 = x OR x = expr3 此时由于对于OR,在SQLite中不能利用索引来优化,所以可以将它转换成带有IN操作符的子句:x IN(expr1,expr2,expr3)这样就可以用索引进行优化,效果很明显,但是如果在都没有索引的情况下OR语句执行效率会稍优于IN语句的效率。
2. 如果一个子句的操作符是BETWEEN,在SQLite中同样不能用索引进行优化,所以也要进行相应的等价转换: 如:a BETWEEN b AND c可以转换成:(a BETWEEN b AND c) AND (a>=b) AND (a<=c)。 在上面这个子句中, (a>=b) AND (a<=c)将被设为dynamic且是(a BETWEEN b AND c)的子句,那么如果BETWEEN语句已经编码,那么子句就忽略不计,如果存在可利用的index使得子句已经满足条件,那么父句则被忽略。
3. 如果一个单元的操作符是LIKE,那么将做下面的转换:x LIKE ‘abc%’,转换成:x>=‘abc’ AND x<‘abd’。因为在SQLite中的LIKE是不能用索引进行优化的,所以如果存在索引的话,则转换后和不转换相差很远,因为对LIKE不起作用,但如果不存在索引,那么LIKE在效率方面也还是比不上转换后的效率的。
三、 几种查询语句的处理(复合查询)
1.查询语句为:<SelectA> <operator> <selectB> ORDER BY <orderbylist> ORDER BY
     执行方法: is one of UNION ALL, UNION, EXCEPT, or INTERSECT. 这个语句的执行过程是先将selectA和sele


相关文档:

2010年SQLite学习笔记之一


2010年SQLite学习笔记之一
一.            如何获取SQLite最新版本
官方站点:http://www.sqlite.org/
从http://www.sqlite.org/网站的Download页面获取
即如下页面下载
http://www.sqlite.org/download.html
二.Windows下的SQLite的源代码是哪个软件压� ......

sqlite和pdo mysql的数据库操作

今天的学习内容是sqlite和PDO mysql。
用自己的话说说两个东西吧:
sqlite算是一种不系统的数据库存储方式,它的存放格式是一个.db后缀的文件,在php中它存放在当前的目录下,貌似不用用户名密码,安全性较低,却比较方便。PHP5中自带的一些系统函数,都是以sqlite_开头的。
PDO全称PHP Data Object,顾名思义就是PHP的� ......

sqlite数据库基本操作

//插入及更新操作
 int nRet = 0;
 sqlite3 * db = NULL;
 CString strFilePath;  //数据库存储路径
//路径赋值(省略)
 //连接数据库
 nRet = sqlite3_open16(strFilePath, &db);    //有几个打开函数可供调用,使用WCHAR类型路径用这个
 if(nRet != SQLIT ......

Sqlite 数据库

1、SQLite简介
  SQLite第一个Alpha版本诞生于2000年5月. 至今已经有9个年头了. SQLite也迎来了一个版本 SQLite 3已经发布.
  SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K� ......

SQLite学习笔记(2)

再说在linux下建立.a 和点so
     到网站下载 sqlite-amalgamation-3.6.22.tar.gz 这个包,反正我下了sqlite3-3.6.22.bin.gz解压后编译不了。
     解压,运行
    #  ./configure --host=armv5l-linux --prefix=/opt/sqlite3/arm --enable-threadsafe. ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号