gpt4 book ai didi

php - 将原始 SQL 'NOT' IN(太慢)转换为 Laravel Eloquent

转载 作者:行者123 更新时间:2023-12-01 00:08:37 33 4
gpt4 key购买 nike

我有一个在 Laravel 5.3 Controller 中使用 Raw SQL 的运行脚本,我发现它很慢而且不安全(作为 Raw)。如果有任何方法可以使它更有效并将其转换为 Eloquent 或 Laravel 的查询生成器?

代码如下,谢谢!

SELECT  machine_code, machine_name
FROM factory_equipment
WHERE machine_code NOT IN
(
SELECT distinct(machine_code)
FROM echecklist_data
WHERE DATE_FORMAT(date, '%Y-%m-%d') = CURDATE()
)
AND type='production' ORDER BY machine_code ASC

最佳答案

您可以使用 SQL 提高效率。我会推荐 NOT EXISTS:

SELECT fe.machine_code, fe.machine_name
FROM factory_equipment fe
WHERE NOT EXISTS (SELECT 1
FROM echecklist_data ed
WHERE ed.machine_code = fe.machine_code AND
ed.date >= CURDATE() AND
ed.date < CURDATE() + INTERVAL 1 DAY
) AND
fe.type = 'production'
ORDER BY fe.machine_code ASC;

我会进一步推荐以下索引:factory_equipment(type, machine_code, machine_name)echecklist_data(machine_code, date)

关于php - 将原始 SQL 'NOT' IN(太慢)转换为 Laravel Eloquent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55997568/

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