0

我有一个这样结束的查询(我是从 java 做的):

WHERE
    c.area_code = ?
AND
    c.cons_no = ?
AND
    c.cat_code = ?

也可以这样做(我将从用户那里得到以下格式

WHERE
     c.area_code||'-'||c.cons_no||'-'||c.cat_code=?

我读了一些将格式移交给数据库会影响性能的地方。这就是我使用第一个查询的原因。这样做的最佳方法是什么?

4

2 回答 2

5

这太奇怪了。

第二种方法将强制进行全表扫描,并且将表的每一行构造成串联形式,以便针对匹配字符串进行测试。如果这些值中的任何一个为 NULL,它也会中断。它还将使您无法利用您正在测试的三个字段上可能存在的任何索引。

第一种方法更好。

于 2013-07-10T03:40:41.710 回答
1

由于第二种方法基于字符串连接操作,因此如果索引存在于任何列上,它将不会使用索引。因此,第一种方法更好。

此外,如果区号不匹配,则无需检查第一种方法中包含的 cons_no 和 cat_code。

于 2013-07-10T04:34:26.297 回答