哪个更好,[表存在检查+选择]还是[选择+错误处理]?

时间:2015-05-28 09:38:31

标签: sql sqlite

SQLite数据库中存在多个表。可以从不存在的表中(从客户端)请求数据。如果表存在,则表中的所需数据将作为行数组发送,如果表不存在,则返回空数组

有两种方式(我能想到):

  • 表格存在检查+选择
  • 选择+错误处理

哪种方式会更好(或更快)?

2 个答案:

答案 0 :(得分:3)

这取决于您的默认情况。如果在大多数情况下表格都存在,请使用第二个选项。正如@CristianAbelleira在评论中指出的那样,这也会减少数据库的负担,因为它减少了一次交易。

另一方面,如果您希望表在大多数时间不存在,请在实际选择之前执行某种检查。这可以通过你的第一个选项完成,但我也喜欢Daves回答的想法。

答案 1 :(得分:2)

我会用第三个想法运行。

当您连接到dB时,获取表名的快速列表(作为良好的双重检查,连接正常工作)将这些存储在某个列表中,然后在用户创建查询时给他们一个下拉列表列表中包含这些表名(或以某种方式仔细检查输入的名称是否在该列表中)。

这里唯一的缺点是用户在会话期间创建了一个新表。

否则,如果用户正在执行自由格式的SQL语句,只需让服务器抛出错误,然后使用合理的错误消息处理它。

dB引擎在这方面可能比“检查表存在”代码更有效。除非您正在生成构建图形的请求,在这种情况下,上述方案可能效果最好(假设您没有数百个表)。

戴夫。