【发布时间】:2021-12-02 03:23:49
【问题描述】:
我有一个产品表,我在其中创建了以下索引:
-
product_category 列全文索引:我希望能够更快地按类别检索产品。 字段值示例:[“服装 >> 女装 >> Women_Tops >> Women_TShirtsTops >> Candies by Pantaloons 衬衫”]
-
标题全文索引:允许用户按标题搜索产品
-
价格指数正常:允许更快地按价格排序
-
在product_id上自动生成主索引
一切正常,但我只是想得到建议,在一个表中有这么多索引是一个糟糕的设计选择吗?随着表的大小增长到 500 万,是否会因为有多个索引而导致任何性能问题?
【问题讨论】:
-
没有足够的信息来做出决定。
-
索引加快了 SELECT 和相关查询的速度。如果您要进行大量更新,那么大量索引可能会对性能产生不利影响。如果您的表大部分是静态的,那么您将不会看到该问题。您必须分析您的应用程序以查看效果。
-
重要的是让应用程序系统可观察,这样当出现问题时,火箭科学家就不需要找出问题所在。
-
如果您需要所有索引来进行快速查询,那么您需要它们。索引的缺点(除了磁盘空间和内存使用)是任何数据更改都会变慢一个档次。起初这可能难以察觉,但您在表上创建的索引越多,性能下降就越明显。现在,要回答这个问题,您需要对其进行基准测试。尝试低负载(更新 + 插入 + 删除 + 选择),然后将其加载,直到你发现它可以支持多少负载
-
@TheImpaler 感谢您的回复。关于如何监控表的性能,即它占用的 ram 或磁盘空间,或者性能是否受到负面影响,有关 mysql 的任何建议或资源?
标签: mysql query-optimization full-text-indexing