sql - 单列与多列索引,用于单独但始终在一起的连接
问题描述
如果我有这样的架构:
profile_network
---
id profile_id(fk) school_type_id(fk) school_major_type_id(fk) school_degree_type_id(fk)
还有一个查询将始终用于将所有这些连接到它们各自的查找表:
LEFT JOIN "profile_network" ON "profile_network"."profile_id" = "profile"."id"
LEFT JOIN "profile_network_school_type" ON "profile_network:school_type"."id" = "profile_network"."school_type_id"
LEFT JOIN "profile_network_school_major_type" ON "profile_network:school_major_type"."id" = "profile_network"."school_major_type_id"
LEFT JOIN "profile_network_school_degree_type" ON "profile_network:school_degree_type"."id" = "profile_network"."school_degree_type_id"
我应该在每个单独的列上创建 4 个索引(col1)(col2)(col3)(col4)
,还是在所有列上创建 1 个索引(col1, col2, col3, col4)
?
解决方案
这取决于选择的连接类型:
使用嵌套循环连接,查找表连接条件的索引会有所帮助。
对于散列连接,没有索引有帮助。
对于合并连接,查找表的连接条件上的索引可能会有所帮助。
这完全取决于基数。
多列索引绝对是错误的。
推荐阅读
- flutter - 在 Flutter 中跨页面移动数据
- selenium - Chrome Webdriver 扩展图标不可见(版本 86)
- php - 尝试从PHP中的数组返回值
- phpstorm - 如何在 PhpStorm/WebStorm 中使用 svelte.js?
- c++ - ARM Cortex M0+ __set_MSP C++17 编译器警告
- javascript - 我正在尝试使用 javascript 从 JSON 文件创建动态 html 选项
- pandas - 在 Pandas 中查找左连接和外连接之间的差异的问题
- java - Spring Boot 找不到 LdapAuthenticationProviderConfigurer 和 OAuth2LoginConfigurer 类
- ios - Stripe iOS SDK 的预建 UI 和卡片保存
- c++ - 调试窗口 VisualStudio 中的运算符 [] 出现问题