我一直在使用我的MySQL数据库的索引,而现在却从不正常了解到他们.通常我会在我要搜索的任何字段上放置索引或使用WHERE子句进行选择,但有时它看起来不是那么黑白.
MySQL索引的最佳实践是什么?
示例情况/困境:
如果一个表有六列并且所有这些列都是可搜索的,那么我应该将它们全部索引还是不索引?
.
索引的负面性能影响是什么?
.
如果我有一个VARCHAR 2500列可以从我的网站的部分搜索,我应该索引吗?
我正在尝试微调我的MySQL服务器,所以我检查我的设置,分析慢查询日志,并尽可能简化我的查询.
如果我正确编制索引,有时候就足够了.我读过某个地方(请纠正我,如果这是愚蠢的),多于我需要的索引会产生相同的效果,就像我没有任何索引一样.
有多少索引就足够了?你可以说它取决于数百个因素,但我很好奇我如何清理mysql-slow.log足够的以减少服务器负载.
此外,我看到了一些像这样"有趣"的日志条目:
# Query_time: 0 Lock_time: 0 Rows_sent: 22 Rows_examined: 44
SELECT * FROM `categories` ORDER BY `orderid` ASC;
Run Code Online (Sandbox Code Playgroud)
有问题的表包含22行,索引设置为orderid.为什么这个查询毕竟出现在日志中?为什么检查44行,如果它只包含22行?
如果我在一个包含13列的表中创建8个索引,这样可以吗?
如果我从中选择数据并按键对结果进行排序,则查询速度非常快,但如果排序字段不是键,则速度要慢得多.比较慢40倍.
我基本上要问的是,如果在数据库中有很多键有任何副作用......