Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个这样结束的查询(我是从 java 做的):
WHERE c.area_code = ? AND c.cons_no = ? AND c.cat_code = ?
也可以这样做(我将从用户那里得到以下格式)
WHERE c.area_code||'-'||c.cons_no||'-'||c.cat_code=?
我读了一些将格式移交给数据库会影响性能的地方。这就是我使用第一个查询的原因。这样做的最佳方法是什么?
这太奇怪了。
第二种方法将强制进行全表扫描,并且将表的每一行构造成串联形式,以便针对匹配字符串进行测试。如果这些值中的任何一个为 NULL,它也会中断。它还将使您无法利用您正在测试的三个字段上可能存在的任何索引。
第一种方法更好。
由于第二种方法基于字符串连接操作,因此如果索引存在于任何列上,它将不会使用索引。因此,第一种方法更好。
此外,如果区号不匹配,则无需检查第一种方法中包含的 cons_no 和 cat_code。