在当前项目中,我正在使用SQL CE。由于它不支持存储过程,因此我必须在存储库中编写sql查询。
选项1:
StringBuilder query = new StringBuilder(); query.Append("SELECT"); query.Append(" c.CUSTOMER_ID,"); query.Append(" COALESCE (c.FIRST_NAME, '') + ' ' + COALESCE (c.LAST_NAME, '') AS FULL_NAME"); query.Append(" ct.NAME as CUSTOMER_TYPE"); query.Append("FROM "); query.Append(" CT_CUSTOMER_TYPE AS ct INNER JOIN CUSTOMER AS c ON ct.CUSTOMER_TYPE_ID = c.CUSTOMER_TYPE_ID");
选项2:
string query = "SELECT c.CUSTOMER_ID, COALESCE (c.FIRST_NAME, '') + ' ' + COALESCE (c.LAST_NAME, '') AS FULL_NAME, ct.NAME as CUSTOMER_TYPE FROM CT_CUSTOMER_TYPE AS ct INNER JOIN CUSTOMER AS c ON ct.CUSTOMER_TYPE_ID = c.CUSTOMER_TYPE_ID";
选项1似乎更具可读性,尤其是当我有10个以上的表联接时,但选项2更快。我应该接受哪个选项,在这种情况下,最佳做法是什么?
在当前项目中,我正在使用SQL CE。由于它不支持存储过程,因此我必须在存储库中编写sql查询。选项1:StringBuilder查询= new StringBuilder();查询......
选项2可能要快几纳秒,但是当您增加在数据库中实际执行的时间(几毫秒)时,几纳秒几乎不会被记录为噪音。
选项3-使用verbatim string literals:
我将SQL字符串放入资源文件中,它允许轻松地编辑多行查询,甚至使用IntelliSence工具提示也可以提供对该查询的强类型命名访问。
为什么不选择3:
我总是使用第二种方法,因为它快得多。第一种方法使用了太多的代码行,导致更大的开销。
我已经习惯这种方法: