gpt4 book ai didi

php - 索引mysql数据库中的所有列是否正确?

转载 作者:行者123 更新时间:2023-11-29 04:36:35 24 4
gpt4 key购买 nike

我的站点加载内容的时间太长,mysql 服务使用的 CPU 负载有时达到 200%。检查表发现表中所有的列都被用作索引。这是对的?它会影响性能吗?

我的服务器配置:16GB RAM,3.4GHz大多数表格有大约 25k ~ 50k 行。以及 10~20 列。

All tables indexing are like this example. All columns as indexes

最佳答案

不,您不会索引所有列。您索引专门涉及 WHERE 子句的列,有时如果它们涉及 ORDER BY

在这种情况下,您需要一个关于type 的索引:

SELECT name FROM users WHERE type='admin'

在这种情况下,您需要在 active,type 上建立索引:

SELECT name FROM users WHERE type='admin' AND active=1

在这种情况下,您可能需要在 active,type,name 上建立索引:

SELECT name FROM users WHERE type-='admin' AND active=1 ORDER BY name LIMIT 10

添加的索引越多,写入速度越慢,但读取速度越快。这是一个经典的权衡。仔细评估您需要哪些索引,并仅在有切实好处时才应用它们。不要只是因为你觉得它们应该在那里而拍打它们。

在超小表上,那些行数小于 1000 的表,索引不会有太大帮助,因为表扫描不会花费那么长时间。对于任何重要的事情,它们都是绝对必要的。

如果您遇到性能问题,我建议您的架构是最大的障碍,而不是缺少索引。

关于php - 索引mysql数据库中的所有列是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39987543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com