mysql - 基于另一列约束一列
问题描述
假设我有以下查询,我只对 3 列感兴趣:
SELECT CustomerID, Country, IF(Country="Mexico", City, null) City FROM Customers;
基本上,它会检索我感兴趣的国家/地区的城市。否则它返回 null。
我的问题是,如果我有大量记录,查询是否比此查询快:
SELECT CustomerID, Country, City FROM Customers;
换句话说,使用 if 语句约束值是否会使查询变慢?
解决方案
您的第一个查询必须执行额外的条件逻辑。这需要稍微多一点的处理。另一方面,返回的数据量略小(因为NULL
值),所以这可能会平衡。
但是,您要从表中返回大量数据,而对性能的真正限制是读取数据。
因此,两者的差异应该非常微小。
另一方面,如果您只对一个国家/地区感兴趣,请使用WHERE
:
SELECT CustomerID, Country, City
FROM Customers c
WHERE Country = 'Mexico';
这会返回更少量的数据,因此它应该更快。
推荐阅读
- javascript - 为什么我的会话存储变量“标头”为空
- sql - 查询生成器中的访问函数生成器不返回任何内容
- javascript - 使用本机 mongoDB 驱动程序、Node.js 和超级终端时,我收到一条错误消息“TypeError: Cannot read property 'n' of undefined”
- javascript - Heroku 上的 Dockerised PHP 映像部署返回 500
- html - 某个部分的锚标记:在当前屏幕中工作但不能作为链接工作?
- drupal-8 - 使用 redirect_uri 到 Controller 的 Hook 中第三方 API 调用中的参数处理
- r - 不同组的不同颜色主题的 R 堆叠条形图(使用 GGPlot)
- amazon-web-services - 在 AWS Cognito 中使用电子邮件和密码使用 adminInitiateAuth 登录
- api - Instagram API - 他们可以提供喜欢的数量吗?
- c# - C# 中的“使用” - 从 using 语句中调用的辅助函数是否使用包含的 IDisposable 对象?