如果我有这样的架构:
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"
我应该在每个单独的列(col1)(col2)(col3)(col4)
上创建4个索引,还是在所有(col1, col2, col3, col4)
列上创建1个索引?
答案 0 :(得分:1)
这取决于所选的联接类型:
使用嵌套循环联接,查找表的联接条件索引会有所帮助。
对于哈希联接,没有索引有帮助。
对于合并连接,在thr查找表的连接条件上建立索引可能会有所帮助。
这完全取决于基数。
多列索引绝对是错误的事情。