在我目前的项目中,我正在使用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");
Run Code Online (Sandbox Code Playgroud)
选项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";
Run Code Online (Sandbox Code Playgroud)
选项1似乎更具可读性,特别是当我有10个以上的表连接时,但选项2更快.
我应该接受哪个选项,在这种情况下最佳做法是什么?
Dea*_*ing 15
选项2可能是几纳秒快,但是当你添加到实际的数据库(几毫秒)执行了一些额外的nanaoseconds的时间几乎没有注册为噪声.
在任何情况下,还有另一种选择,这是两个世界中最好的选择:@ -strings:
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
";
Run Code Online (Sandbox Code Playgroud)
选项3 - 使用逐字字符串文字:
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";
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5270 次 |
最近记录: |