不是 DBA 所以请原谅我的无知...
我有一个包含 20 个字段的表,其中 8 个是外键。Mysql 默认为每个外键添加了一个索引。表有大约 10 万行。在检索数据时,一些外键会被使用,而另一些则不会。另外,我想为查询时经常使用的另外两个字段添加索引。
我的问题是——
1) 在下面的代码中,我们应该只索引字段“标准”还是应该将 col1、col2 创建为非聚集索引?
SELECT col1, col2
FROM table1
WHERE criteria
Run Code Online (Sandbox Code Playgroud)
我的理解 - 如果仅索引字段“标准”,则查询将使用索引来解析要检索的行。发布它会进行全表扫描以检索相关行
2)我可以删除外键上的索引并且仍然使外键约束起作用吗?
3) 具有 20 个字段的表上的 10 个索引。这会在插入过程中导致性能问题吗?
4) 索引最优存储方案——BTREE、RTREE、HASH。我假设 BTREE 用于具有 > 或 < 的查询,并为 = 查询使用散列。这是正确的方法吗?
任何建议将不胜感激。