SELECT `b`.`id` FROM ( SELECT `hpr`.`id`, COUNT(`hahy`.`id`) `a` FROM `hmm_pr` `hpr` LEFT JOIN `hoa_approve_history` `hahy` ON `hpr`.`id` = `hahy`.`doc_id` AND `hahy`.`deleted` = 0 WHERE `hpr`.`deleted` = 0 AND hpr.`status` = 'APPROVED' AND `hahy`.`approve_status` = '通过' GROUP BY `hpr`.`id` ) `b` WHERE `b`.`a` * 1 < 2; 这条mysql语句如何优化?
时间: 2023-07-13 21:07:27 浏览: 131
这条 MySQL 语句可以优化如下:
1. 使用 INNER JOIN 代替 LEFT JOIN,因为我们只需要计算 `hoa_approve_history` 中与 `hmm_pr` 关联的记录数,而不需要包含 `hmm_pr` 中没有关联记录的行。
2. 将 COUNT(`hahy`.`id`) 改为 COUNT(*),因为我们不需要计算 `hahy`.`id` 的数量,而只需要计算记录数。
3. 可以考虑添加索引以加快查询速度。建议在 `hmm_pr` 表上建立一个联合索引,包括 `deleted`、`status` 和 `id` 字段,以及在 `hoa_approve_history` 表上建立一个联合索引,包括 `deleted`、`doc_id` 和 `approve_status` 字段。
优化后的 SQL 语句如下:
```
SELECT hpr.id
FROM hmm_pr hpr
INNER JOIN hoa_approve_history hahy ON hpr.id = hahy.doc_id AND hahy.deleted = 0 AND hahy.approve_status = '通过'
WHERE hpr.deleted = 0 AND hpr.status = 'APPROVED'
GROUP BY hpr.id
HAVING COUNT(*) < 2;
```
相关问题
w25q128 hpr寄存器
W25Q128是一款常见的串行闪存芯片,而HPR寄存器是其中的一个寄存器。
HPR寄存器是高优先级寄存器(High Priority Register),用于存储闪存芯片的高优先级配置信息。它是一个8位寄存器,可以通过SPI接口进行读写操作。
HPR寄存器的具体配置和使用方法取决于具体的芯片型号和应用场景。一般情况下,它用于存储闪存芯片的一些高优先级的配置参数,例如写保护设置、芯片ID、操作模式等。在使用闪存芯片时,需要根据具体的需求来配置HPR寄存器,以确保芯片的正常工作。
需要注意的是,对HPR寄存器的配置和使用需要非常谨慎,因为错误的配置可能导致芯片无法正常工作或者数据丢失等问题。因此,在进行相关操作时,应该仔细阅读芯片的数据手册,并严格按照指导进行操作。
CCoreGlobalCtrlBase::LoadDSo, HPR_LoadDSo Failed, Path[/data/ZGKONAMS/AMSPublish/component/HaiKangSdk/libssl.so.1.1] syserror[115]
这个错误信息表示在加载 `/data/ZGKONAMS/AMSPublish/component/HaiKangSdk/libssl.so.1.1` 时出现了错误,错误码为 115。通常情况下,这种错误码表示文件不存在或无法访问。请检查这个文件是否存在,并且您是否有足够的权限来访问它。如果文件确实存在并且您有足够的权限,那么可能是该文件依赖的其他库文件未安装或未配置正确。您可以使用 `ldd` 命令查看该文件所依赖的库文件,并确保它们都已正确安装和配置。
阅读全文