use*_*302 5 mysql sql optimization
我有一个表,其中包含一个充当"标志"的列,用于决定从哪个表中提取附加信息(即值1从table1中拉出,2从table2中取出,等等).通常我会使用索引/键加入表.但是,我可以加入的表包含可以规范化为单独表的信息,这使我可以使用列来决定要连接哪个表.
所以这是我的问题,根据此列中生成的值连接不同表的最有效方法是什么?
以下是我目前知道如何完成此任务的两种方式.我很确定它们都不是最佳解决方案:
从我的主表中提取信息(包含决定要加入哪个表的列值),然后通过我的应用程序中的代码发送其他查询以获取其余信息.
加入疯狂,返回每个表的列(即使未使用).然后,通过我的代码,忽略不需要的表的空值.
绝对不是选项 2。如果您不需要数据,请不要检索它。简单的。当您不需要数据时,连接表(尤其是大表)的效率会非常低。您可以选择选项 1 或使用动态 SQL 来构建查询。然后,我会将一些测试用例放在一起并运行执行计划以查看查询的执行情况。
| 归档时间: |
|
| 查看次数: |
2579 次 |
| 最近记录: |