c++ - MySQL 中的 where 子句如何工作?

标签 c++ c mysql

我有疑问。假设R和S分别是与属性A和B的2个关系。如果我有疑问

Select * 
From R, S
Where R.A = S.B 

这是否像 c 或 c++ 中的双 For 循环一样工作

For( i=0; i<n; i++)
    For( j=0; j<n; j++)
        if (i == j)
           //DO some work 

最佳答案

首先:不知道 mysql 将如何在内部优化查询(不知道 mysql 的内部结构)。

用纯关系数据库的话来说,这就是你正在做的:

SELECT * FROM R, S -> 执行交叉连接,生成所有 (r,s) 元组。

WHERE R.A = S.B -> 现在选择那些具有这种行为的元组

因此它将遍历所有元组(或多或少像您的代码)。然而,mysql 完全有可能在内部将其简化为更高效的内部联接,它从不创建所有元组,而只创建 R.A=S.B 有效的元组。

关于c++ - MySQL 中的 where 子句如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2812959/

相关文章:

c++ - std::uniform_real_distribution<double>(0,1) 能否返回大于 0.99999999999999994 的值?

c++ - 虚拟保护大小

c++ - 使用 Qt : Invalid conversion from const void* to void* while using QList<Type *const>

c - 如何重新设置 C 代码的样式以从 if 语句条件中排除赋值

android - Realm 对象服务器 + MSSQL/MySQL

c++ - 如果我无法承受抛出异常时的低性能,我可以使用 STL 吗?

c - 使用内存映射 I/O 的 memcpy 和 friend

c++ - _T( ) 宏更改为 UNICODE 字符数据

mysql - sql - 如果将 NULL 与 NULL 进行比较,CASE 返回 "true"?

mysql - 使用 SQL 从字段中的任意位置提取分隔的子字符串