sqlite使用的一些技术积累
2017-09-27 16:31
239 查看
sqlite的表格,有时只是作为中间状态存储时,可以采用temporary table,这种表格存在内存中,不消耗IO操作,速度快。在PC中,temporary table和普通table速度,我测试的是3:8。制作temporary table时,cpu 100%消耗,因此,瓶颈在cpu不是内存,如果有更快的cpu,temporary table会更快。在cortex A8的单板上,两种表格的速度几乎是一样的,因为嵌入式的CPU太弱了,发挥不了临时表的优势。
sqlite数据库,删除或drop table后,体积并不会减少。必须使用vacuum指令才能减少体积。原因是,sqlite数据库会保留已分配的空间,所以删除后不会减少,vacuum会重新生成排列紧致数据库,体积就下来了。
sqlite创建列名时,如果列名包含了()括号,那么语句会出错,因为和create table()这个括号无法区分。只要在列名外面加入方括号[]即可,说明括号里的是列名,列名就可以使用()了。
sqlite有个特殊的表格叫sqlite_master,记录着所有创建的表格(包含触发器)的信息,它包含type,name,tbl_name,rootpage(integer),sql的信息;临时表则从sqlite_temp_master中找。
建立主键应该遵循的原则(转)
1. 主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。2. 永远也不要更新主键。实际上,因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。3. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。4. 主键应当由计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了唯一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。
图形化界面,推荐使用sqliteman取代sqlitebrower,后者一直没有正式版,sql语句出错会假死。sqliteman是跨平台的,可以解决sqlitebrower的问题,同时,界面更易操作。ubuntu安装:sudo aptitude install sqliteman
sqlite数据库,删除或drop table后,体积并不会减少。必须使用vacuum指令才能减少体积。原因是,sqlite数据库会保留已分配的空间,所以删除后不会减少,vacuum会重新生成排列紧致数据库,体积就下来了。
sqlite创建列名时,如果列名包含了()括号,那么语句会出错,因为和create table()这个括号无法区分。只要在列名外面加入方括号[]即可,说明括号里的是列名,列名就可以使用()了。
sqlite有个特殊的表格叫sqlite_master,记录着所有创建的表格(包含触发器)的信息,它包含type,name,tbl_name,rootpage(integer),sql的信息;临时表则从sqlite_temp_master中找。
建立主键应该遵循的原则(转)
1. 主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。2. 永远也不要更新主键。实际上,因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。3. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。4. 主键应当由计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了唯一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。
图形化界面,推荐使用sqliteman取代sqlitebrower,后者一直没有正式版,sql语句出错会假死。sqliteman是跨平台的,可以解决sqlitebrower的问题,同时,界面更易操作。ubuntu安装:sudo aptitude install sqliteman
相关文章推荐
- 基于myFaces的JSF技术使用中的一些经验(一)[godroad原创]--乱码的处理
- 基于myFaces的JSF技术使用中的一些经验(三)[godroad原创]--使用myFaces的建立一个xml文件的树形表示
- 做项目的公司如何做技术积累——对以前工作的一些回想
- SOHU门户使用的一些技术(转)
- SQLite使用的一些问题
- 【转自 技术.人生】[ajax]FireFox和IE下使用ajax的一些小问题总结
- 基于myFaces的JSF技术使用中的一些经验(一)[godroad原创]--乱码的处理
- 使用Keil C调试某系统时积累的一些经验
- Google Map开发系列(二)——使用谷歌地图API应该有所了解的一些技术外背景
- 平时积累的有关MSDN 里ActiveX开发技术的一些链接.
- SQLite 3 一些基本的使用
- Linux日常使用的一些积累
- SQLite 3 一些基本使用
- 在linux上使用webloigc的一些技术
- .Net的一些技术积累(给自己看的)
- Entity Framework中使用SQLite的一些问题
- 基于myFaces的JSF技术使用中的一些经验(二)[godroad原创]--dataTable的使用
- 使用谷歌地图API之前应该有所了解的一些技术外背景
- 基于myFaces的JSF技术使用中的一些经验(三)[godroad原创]--使用myFaces的建立一个xml文件的树形表示
- 在Ofbiz的base程序库中使用到的一些java开源技术