Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在SQLite数据库中使用临时表_Android_Sqlite_Temp Tables - Fatal编程技术网

Android 在SQLite数据库中使用临时表

Android 在SQLite数据库中使用临时表,android,sqlite,temp-tables,Android,Sqlite,Temp Tables,我浏览了Martin Eve的源代码,发现临时表与主表一起创建,方法是在具有_id的表上调用replace db.execSQL(COLLECTIONS_CREATE.replace(" (_id", "_TEMP (_id")); 我想它会创建一个新的临时表。再多解释一下就好了。此外,数据首先插入临时表,然后移动到主表 我搜索了SO,发现临时表用于处理复杂查询、排序和提高性能。有人能解释一下它在这种情况下有什么帮助吗?临时表就是这样,临时的。一旦您关闭连接,它们就会消失,至少在sqlite中

我浏览了Martin Eve的源代码,发现临时表与主表一起创建,方法是在具有_id的表上调用replace

db.execSQL(COLLECTIONS_CREATE.replace(" (_id", "_TEMP (_id"));
我想它会创建一个新的临时表。再多解释一下就好了。此外,数据首先插入临时表,然后移动到主表


我搜索了SO,发现临时表用于处理复杂查询、排序和提高性能。有人能解释一下它在这种情况下有什么帮助吗?

临时表就是这样,临时的。一旦您关闭连接,它们就会消失,至少在sqlite中是这样。它通常比其他DMB更复杂,尽管这通常是默认行为

因此,只要需要临时表,就可以使用临时表!(只是开玩笑而已)。性能会更好,因为不涉及I/O(这通常是数据库性能问题的原因)


另一个用例是当您想要使用永久表中的内容而不更改所述表中的任何内容时;然后,您可以在临时表中选择永久表,并保持永久表的完整性。

临时表允许程序员将一个复杂的查询分解为多个相对简单的查询,从而简化了程序员的工作,此外,还可以让程序员暂时存储结果,以便在程序运行过程中,可以出于不同目的多次查阅结果,而无需每次重新实例化。后者也使计算机更容易操作。可以说,磁盘子系统和CPU可以稍作休息

前者的一个示例:假设您想要获取所有记录,其中:

                    the sale was in the eastern division
                    and involved one of the several new gizmos introduced last quarter
                    and occurred during the special 5-day bonanza sale

                    or

                    the sale was made by the boss's daughter
                    who floats from division to division
                    and the sale occurred at any time during the month of May
然后,您的程序将生成一封电子邮件,表扬销售人员的销售,并抄送给部门经理

获取满足上述任何一组条件的记录的单个查询可能会变得有点笨拙——对于一个人在处理了一整天的生活中必须处理的垃圾之后,头脑混乱或眼睛疲惫的人来说,处理起来有点困难。当然,这只是一个微不足道的例子;在生产系统中,条件往往比上述条件更为复杂,包括空值的计算和测试以及各种其他繁琐的事情,这些都可能导致查询语句变长,变成一团乱麻

因此,如果您创建了一个临时表,您可以用满足第一组条件的行填充临时表,然后编写第二个查询,获取满足第二组条件的行,并将它们插入临时表,瞧,临时表包含了您需要处理的所有行,在两个婴儿的步骤