0

我有一些字段有 4 种不同的排序选项。在不同的情况下,字段按这 4 个选项和 2 个日期和用户 ID 进行排序或过滤。让我们假设这些列是:

列:id、info1、info2、option1、option2、option3、option4、date1、date2、userid

所以我的问题是:

一个表中是否可以有 7 个不同的索引(option1、option2、option3、option4、date1、date2、userid)?它对大型数据库中的数据库读写性能有影响吗?

如果是,您有什么建议作为解决方案?

4

3 回答 3

0

插入或更新表时需要更新索引。因此,索引越多,这些操作就会越慢。

MySQL 通常在每个查询中每个表只使用一个索引。如果您有 4 个不同的排序选项,通常有一个涵盖每个排序选项的索引是有意义的。

IIRC,您不需要 (a,b) 和 (a,b,c) 上的索引,因为 (a,b,c) 涵盖两者。

于 2012-09-10T22:16:52.353 回答
0

每当您执行CREATE,UPDATEDELETE索引需要更新。SELECT因此,您应该根据语句的集中度来限制您的索引。您还需要对索引的工作原理有一个基本的了解,例如,如果您有一个复合索引(c1, c2)并且您运行一个仅选择的查询c2,那么它是没有用的。您可能还想研究创建一个VIEW而不是索引。

于 2012-09-10T22:20:21.870 回答
0

“指数和使用它们”的概念是一种权衡。它们可以使您的搜索速度更快,但您必须在其他地方支付费用。许多索引使 DML 命令花费更长的时间,因为索引应该在每个 UPDATE、DELETE 和 INSERT 命令时更新。他们想在搜索中为您服务,而您必须付出代价。您拥有的索引越多,您获得的搜索速度就越高,UPDATE 和 INSERT 时间也就越长。应该非常明智地使用和调整它们。

您也可以在标准化中看到这种成本效益。你获得了标准化、更好的分析能力和广泛传播的数据,你应该为收集它们和连接付费。

于 2012-09-10T22:20:24.943 回答