![]() |
1
0
检查了OMG小马的答案 SO - Use Of Correlated Subquery ,我想到了:
这个解释在我的小数据集上看起来很合理。它在现实中是什么样子的? |
![]() |
2
0
我最初的想法是创建一个临时表来保存(和索引)匹配名称的用户ID,并使用它来针对每个链接表进行连接。不幸的是,在MySQL中,一个临时表在查询中只能联接一次。 棘手的解决方法是创建一个永久表,将连接ID添加到主键,这样单独的会话就不会被混淆。
每次需要答案时,将重复以下顺序:
接下来,扩展现有的联合,以便只拉出相关的用户标识:
也许这将是一个改进,因为并非所有链接表的每一行都被拉入联合中。 这个解释有点奇怪,因为在TT上只使用了4个字节的索引——在这里我可以预期所有8个字节。也许这是因为我在TT中的数据太少了。
|
![]() |
3
0
另一种方法是稍微取消设计的规范化,以更好地支持查询。 为此,请创建一个新表“role”:
只要将新行添加到包含用户标识的链接表中,就会更新此信息:
一段时间后,角色条目可能已经存在,因此“忽略”修饰符。 可以从现有表中引导该表:
然后,您的搜索查询就变成了一组简单的连接,MySQL在优化这些连接时应该没有问题:
这将给出一个非常“广泛”的答案。 |
![]() |
hello_programmers · Mysql从其他表输出一列 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
![]() |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
|
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 2 年前 |
|
Kugelfisch · 用php为数据库加密数据 2 年前 |