Php 如何在执行查询时解决数据库锁定问题

Php 如何在执行查询时解决数据库锁定问题,php,mysql,database,performance,Php,Mysql,Database,Performance,嗨,朋友们,谁能告诉我我的问题是什么。当我执行时,它会将数据库锁定5到10分钟,请帮助我优化此查询 SELECT u.username, u.email, u.created_at, p.firstname, p.lastname, p.address, p.address_2, p.city, p.country, p.state, p.zip, p.phone,

嗨,朋友们,谁能告诉我我的问题是什么。当我执行时,它会将数据库锁定5到10分钟,请帮助我优化此查询

SELECT 
    u.username, 
    u.email, 
    u.created_at, 
    p.firstname, 
    p.lastname, 
    p.address, 
    p.address_2, 
    p.city, 
    p.country, 
    p.state, 
    p.zip, 
    p.phone, 
    p.phone_2, 
    u.last_ip, 
    u.last_login_at, 
    u.auto_login, 
    u.registration_page,
    s.product_name
    FROM
    users AS u
        Left Join subscriptions AS s ON u.id = s.user_id
        Left Join profiles AS p ON u.id = p.user_id
    where u.registration_page='Chris_Cleanse' and
        u.id not in (select user_id from goal_sheets) and 
        u.id not in(select user_id from sheet_user_popup_not_adam) and 
        s.expired=TRUE ORDER BY u.id DESC;

尝试使用
内部联接
。请访问以获取有关
JOIN
s的直观说明

PS:在查询中正确转义
`table`
`columns`
名称。这是个好习惯


更新:运行一个
解释选择…
(您的查询在这里而不是
选择…
)并分析结果。也在这里发布它们。

您可以尝试为上述记录创建mysql视图,因为大约有500万条记录

我想您在where条件下的子查询包含大量数据。 也许您可以尝试优化SQL,如下所示:

SELECT
    u.username,u.email
    FROM
    users AS u
        Left Join subscriptions AS s ON u.id = s.user_id
        Left Join profiles AS p ON u.id = p.user_id
    Left Join goal_sheets gs ON u.id = gs.user_id
    Left Join sheet_user_popup_not_adam sa ON u.id = sa.user_id
    where u.registration_page='Chris_Cleanse' 
        and gs. user_id is null 
    and sa.user_id is null 
        s.expired=TRUE ORDER BY u.id DESC;

这个问题更适合,或者你可以发布
解释选择u.username,
(解释你的查询)?@D.Kasipovic这里是输出首先,在订阅上创建索引用户id(用户id)并查看这如何减少时间。您还可以用联接替换两个子查询,然后添加条件,其中目标\u sheets.user\u id为NULL,而sheet\u user\u popup\u not\u adam.user\u id为NULL。@GeraldSchneider:这与代码检查无关。这段代码似乎不起作用,我们只检查工作代码。感谢CodeAngry的回复,我尝试了一下,但它不起作用:(将近500万条记录。@haseeb:)很好!你有索引吗?仅仅添加索引需要一段时间。当你浏览500万行并加入它们时,拥有一些更先进的MySQL技术是很好的。还考虑移动到<代码> dab.sx.com > /COD> .@ Haseb添加索引>代码>注册页面>代码>代码> ID 字段。