sqlite使用的一些技术积累



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 

猜你喜欢

转载自blog.csdn.net/yyw794/article/details/78114375
今日推荐