Mysql 如果要查询表中的每个字段,是否应该为每个字段编制索引?

Mysql 如果要查询表中的每个字段,是否应该为每个字段编制索引?,mysql,database,Mysql,Database,假设您要查询相同数量、很多的索引。您可以,但是索引遵循收益递减规律:您创建的越多,拥有的数据越多,它们的性能就越差。索引的性能也将在很大程度上取决于特定的索引算法,以及它是否适合存储的数据量 但是,在实践中,最好的方法总是索引您需要的内容。所以,如果需要为每个字段编制索引,请继续为每个字段编制索引。正如我所说,您需要关注索引的性能。您的意思是使用WHERE子句中的每个字段,还是仅仅获取每个字段?这仍然取决于您的实际查询和实际数据。没有通用的答案。正如@Dan所说,这取决于你的数据。例如,如果某个

假设您要查询相同数量、很多的索引。

您可以,但是索引遵循收益递减规律:您创建的越多,拥有的数据越多,它们的性能就越差。索引的性能也将在很大程度上取决于特定的索引算法,以及它是否适合存储的数据量


但是,在实践中,最好的方法总是索引您需要的内容。所以,如果需要为每个字段编制索引,请继续为每个字段编制索引。正如我所说,您需要关注索引的性能。

您的意思是使用WHERE子句中的每个字段,还是仅仅获取每个字段?这仍然取决于您的实际查询和实际数据。没有通用的答案。正如@Dan所说,这取决于你的数据。例如,如果某个字段只存储两个值,那么将其作为索引是没有意义的。尝试事项:对于每个字段,按[field]从表组中选择[field],count*。索引那些分布均匀但仍返回合理行数的字段不会索引布尔字段。分析查询,找出是否始终同时使用两个或多个字段。这些字段是复合索引的候选字段。附带一个分析器,选择最差的查询,优化一个,用分析器再次运行,选择最差的查询,优化一个……你也需要考虑插入性能-更多的索引意味着较慢的插入。