C# 如果条件在select查询中,或者如果条件在代码后面?性能方面的好处是什么?
我有一个MYSQL表,用于存储员工的联系人值(添加联系人详细信息)。此add_contact_details表包含300万条记录。 我使用这个select查询从该表的联系人中获取记录C# 如果条件在select查询中,或者如果条件在代码后面?性能方面的好处是什么?,c#,mysql,asp.net,datatable,C#,Mysql,Asp.net,Datatable,我有一个MYSQL表,用于存储员工的联系人值(添加联系人详细信息)。此add_contact_details表包含300万条记录。 我使用这个select查询从该表的联系人中获取记录 SELECT head.`add_title` AS `title`, head.`add_description` AS `descp`, con.`con_name` AS `name`, IF( con.`con_status_show_email` = TRUE, con.`con_email`, NUL
SELECT
head.`add_title` AS `title`,
head.`add_description` AS `descp`,
con.`con_name` AS `name`,
IF(
con.`con_status_show_email` = TRUE,
con.`con_email`,
NULL
) AS `email`
FROM
`add_header` AS `head`
INNER JOIN `add_contact_details` AS `con`
ON head.`add_id` = con.`add_id_ref`;
因此,如果con_status_show_email=true,则email字段将返回email,否则该列将返回NULL值。所以我把它放到webform中的datatable中,并根据它在电子邮件标签上显示false或true。
这就是我现在所做的
如果我这样做呢
SELECT
head.`add_title` AS `title`,
head.`add_description` AS `descp`,
con.`con_name` AS `name`,
con.`con_status_show_email`,
con.`con_email`
from
`add_header` AS `head`
INNER JOIN `add_contact_details` AS `con` ;
所以在这里,它会向datatable返回额外的列。因此,在代码隐藏中,我必须检查con_status_show_电子邮件是否包含null visible false电子邮件标签,如果为true,则在con_电子邮件列中返回电子邮件
所以这两种方法都在做同样的事情。在第一种方法中,difference是small-if-part在数据库中工作,并向datatable返回几列。
在第二种方法中,它只是将查询结果重新发送到datatable,并在其后面的代码中执行一些if部分。
那么什么是最好的呢?
如果在select查询中使用“If”语句,是否会导致性能问题?性能方面,我将执行以下操作:
if
函数con_status\u show_email
和con_email
列,然后在运行时根据代码隐藏决定是否显示电子邮件字段当然,如果您正在检索数百万条记录,
if
函数将对select
查询中的每条记录进行求值……也就是说,它将被求值一百万次谢谢您的回答。你为什么这么说呢?摆脱If语句。数据库在这方面是否效率低下?我所做的只是将datatable绑定到aspx中的gridview。我已经在gridview中启用了分页。可以吗?还是需要控制来自select查询的记录数?启用分页选项是否会起到神奇的作用?