Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL在mariaDB上的查询速度非常慢_Mysql_Mariadb - Fatal编程技术网

MySQL在mariaDB上的查询速度非常慢

MySQL在mariaDB上的查询速度非常慢,mysql,mariadb,Mysql,Mariadb,下面是一个关于我将站点移动到的新服务器的查询。在运行InnoDB的原始服务器上,下面的现有查询速度非常快。MariaDB 5.6版的新服务器速度异常缓慢 新服务器上唯一需要删除的行是和np.user\u id=然后它又变快了 子查询对速度没有很大影响 我对不同的DB版本了解不多,不知道为什么会出现这种情况 有人能解释这个问题吗?提前谢谢 SELECT np.id, np.user_id, np.post_id, np.response_id, np.viewed, np.clicked,

下面是一个关于我将站点移动到的新服务器的查询。在运行InnoDB的原始服务器上,下面的现有查询速度非常快。MariaDB 5.6版的新服务器速度异常缓慢

新服务器上唯一需要删除的行是和np.user\u id=然后它又变快了

子查询对速度没有很大影响

我对不同的DB版本了解不多,不知道为什么会出现这种情况

有人能解释这个问题吗?提前谢谢

SELECT
    np.id, np.user_id, np.post_id, np.response_id, np.viewed, np.clicked, np.emailed, np.timestamp,
    su.id AS suUserId, 
    su.fullname AS suFullName, su.username AS suUserName, su.mem_id AS suMemId 
FROM notify_post np 
    LEFT JOIN userfeed pf ON np.response_id IS NULL AND pf.id=np.post_id
    LEFT JOIN userresponses pr ON np.response_id IS NOT NULL AND pr.userfeed_id=np.post_id

    JOIN users su ON 
        (np.response_id IS NULL AND su.id=pf.user_id) 
        OR 
        (np.response_id IS NOT NULL AND su.id=pr.user_id AND pr.id=np.response_id)

WHERE np.user_id=1 
    AND pf.user_id NOT IN (SELECT bk.block_id FROM block bk WHERE bk.user_id=1 AND bk.block_id=pf.user_id)
    AND np.user_id!=su.id
ORDER BY np.timestamp DESC
LIMIT 0,10

重新思考模式设计。这种模式对性能非常不利:

WHERE (x IS NULL     AND ...)
   OR (x IS NOT NULL AND ...)

它以这种形式清楚地显示在一个案例中,再加上两个不太明显的地方。

除了显示所有相关表的CREATE TABLE语句外,有关查询性能的问题始终需要对给定查询进行解释