我有一个名为follow
的表,这是表结构:
- follower_id
- following_id
- when // timestamp
这些是我执行的SQL查询:
SELECT * FROM follow WHERE follower_id = ? ORDER BY when LIMIT 0,20
SELECT * FROM follow WHERE following_id = ? ORDER BY when LIMIT 0,20
SELECT * FROM follow WHERE follower_id = ?
SELECT * FROM follow WHERE following_id = ?
这些是我的索引:
follower_id, when
following_id, when
follower_id
following_id
这种做法是否属实?在DB中有这么多(或多于这个)索引是否有任何缺点?
答案 0 :(得分:12)
并且有这个数量(或者超过数量)的任何缺点 这个)DB中的索引?
我不认为这些数量的索引会影响您的表现。
但是,您可能会注意到,使用SELECT而不是INSERT时,索引是好的和快速的。
来自[here] [1]的索引的缺点表明:
当在列上创建索引时,MySQL也会创建一个 单独的文件,已排序,并且只包含您所在的字段 有兴趣进行排序。
首先,索引占用磁盘空间。通常空间使用不是 重要的,但是因为在每个列的每个列上创建索引 可能的组合,索引文件的增长速度要快得多 数据文件。在表具有大表大小的情况下, 索引文件可以达到操作系统的最大文件大小。
其次,索引会降低编写查询的速度,例如 INSERT,UPDATE和DELETE。因为MySQL必须在内部维护 实际数据文件中插入行的“指针”,所以有 是在上述写作查询的情况下要支付的性能价格 因为每次更改记录时,都必须更新索引。 但是,您可以以这样的方式编写查询 不会引起明显的性能下降。
[1]:已删除垃圾邮件链接