首页 > 解决方案 > 基于另一列约束一列

问题描述

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

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

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

SELECT CustomerID, Country, City FROM Customers;

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

标签: mysqlsql

解决方案


您的第一个查询必须执行额外的条件逻辑。这需要稍微多一点的处理。另一方面,返回的数据量略小(因为NULL值),所以这可能会平衡。

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

因此,两者的差异应该非常微小。

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

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

这会返回更少量的数据,因此它应该更快。


推荐阅读