0

像这样的 SELECTS 仅在暂存系统中存在以下问题:

SELECT * FROM `nd` 
WHERE `nd`.`nd_id` IN (1, 396, 782, 830, 831, 1929, 3786, 5059, 5713, 5714, 6698) 
AND `nd`.`nd_type` = 'App\Models\N' 
AND `nd`.`deleted_at` 
IS NULL

在我的开发系统中,选择需要 340 毫秒。在我的登台系统(其他服务器)中,所有 CPU 都达到 100% 并且永远不会完成选择。当我在登台系统的 PHPMyAdmin 中直接启动此查询时,同样的问题。

我该怎么办?配置中的某些设置错误?

也许问题是:在部署到 ndaten 表中的 set 键的迁移后未完成。第一个键已设置,迁移执行停止。修复和优化表已经完成。

感谢帮助 :)

4

1 回答 1

0

综合指数可能有助于分期和生产:

INDEX(nd_type, deleted_at, nd_id)

通过“ndaten 表中设置键的迁移”,您的意思是暂存和生产没有相同的索引吗?如果是这样,那违反了分期的主要意图。(我不知道 laravel 的“迁移”功能,所以我无法详细说明,但这听起来很重要!)

如果在处理了这两个之后,您仍然有问题,请提供

SHOW CREATE TABLE
the size of the relevant table(s)
the query
EXPLAIN SELECT ...
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';  -- on both
于 2021-07-15T17:25:20.337 回答