根据另一列约束一列

时间:2019-03-18 13:45:45

标签: mysql sql

假设我有以下查询,仅对3列感兴趣:

persistentVolumeReclaimPolicy: Delete

基本上,它将检索我感兴趣的国家/地区的城市。否则,将返回null。
我的问题是,如果我有大量记录,查询是否比此查询快:

SELECT CustomerID, Country, IF(Country="Mexico", City, null) City FROM Customers;

换句话说,使用if语句约束值是否会使查询变慢?

2 个答案:

答案 0 :(得分:3)

您的第一个查询必须执行其他条件逻辑。这需要更多的处理。另一方面,由于NULL值,返回的数据量略小,因此这可能会有所平衡。

但是,您正在从表中返回大量数据,而对性能的真正限制是读取数据。

因此,两者之间的差异应该很小。

另一方面,如果您只对一个国家感兴趣,请使用WHERE

SELECT CustomerID, Country, City
FROM Customers c
WHERE Country = 'Mexico';

这返回的数据量较小,因此应该更快。

答案 1 :(得分:1)

差别很小。

查询的费用通常基于I / O块访问和行数。额外的计算列几乎没有任何区别。