Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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 5.1.73左连接超时_Mysql_Performance_Timeout_Left Join_Mysql 5.1 - Fatal编程技术网

MySQL 5.1.73左连接超时

MySQL 5.1.73左连接超时,mysql,performance,timeout,left-join,mysql-5.1,Mysql,Performance,Timeout,Left Join,Mysql 5.1,我在本地使用mysql 5.7.28,一切正常,但在5.1.73的开发服务器上,我的请求超时(+2mn) 请求很简单,但我不明白为什么它不起作用 SELECT t1.* FROM t1 LEFT JOIN t2 ON t1.id = t2.id 奇怪的是,如果我换t1和t2,它工作得很好。 如果我使用内部连接,它工作得很好。 如果我这样做: SELECT t1.* FROM t1 WHERE t1.id NOT IN ( SELECT t1.id FROM t1 INNER JOIN

我在本地使用mysql 5.7.28,一切正常,但在5.1.73的开发服务器上,我的请求超时(+2mn)

请求很简单,但我不明白为什么它不起作用

SELECT t1.*
FROM t1
LEFT JOIN t2 ON t1.id = t2.id
奇怪的是,如果我换t1和t2,它工作得很好。 如果我使用内部连接,它工作得很好。 如果我这样做:

SELECT t1.* 
FROM t1 
WHERE t1.id 
NOT IN (
SELECT t1.id 
FROM t1 
INNER JOIN t2 ON t1.id = t2.id)
它不起作用了

t1.id和t2.id都有索引。 t1.id可以为NULL,t2.id不能(但在localhost中也是如此??)

如果你知道为什么这不起作用,请随时帮助我:D

表:

T1:

////////////////////

T2:


谢谢

在复杂查询中两次使用同一个表时,为每个实例指定不同的别名。重复使用
t1
会让我感到困惑,可能会让解析器感到困惑

如果希望t1中的行不在t2中,请使用以下模式:

SELECT  ...
    FROM t1
    LEFT JOIN t2  ON t2.foo = t1.foo
    WHERE t2.id IS NULL;   -- Note
避免
不在(选择…)
;它可能优化得很差

请提供
SHOW CREATE TABLE
,以便我们了解在
nom
上重复索引是否是故意的(例如
索引
全文

它不起作用了

超时?错误的结果?结果太多了?结果太少


在5.1和5.7之间增加了很多优化;这可能解释了“超时”的原因。

在复杂查询中使用同一个表两次时,为每个实例指定不同的别名。重复使用
t1
会让我感到困惑,可能会让解析器感到困惑

如果希望t1中的行不在t2中,请使用以下模式:

SELECT  ...
    FROM t1
    LEFT JOIN t2  ON t2.foo = t1.foo
    WHERE t2.id IS NULL;   -- Note
避免
不在(选择…)
;它可能优化得很差

请提供
SHOW CREATE TABLE
,以便我们了解在
nom
上重复索引是否是故意的(例如
索引
全文

它不起作用了

超时?错误的结果?结果太多了?结果太少


在5.1和5.7之间增加了很多优化;这可以解释“超时”的原因。

好的,我解决了这个问题

t1.id是拉丁语,t2.id是utf8。。。。
将两者都更改为相同的,并且是即时的

好的,我解决了这个问题

t1.id是拉丁语,t2.id是utf8。。。。
将两者都更改为相同的,并且是即时的

这是我的第一个请求,第二个请求的
不在
中,应该做与
左连接完全相同的事情。。。其中t2.id不为NULL
。我在原来的帖子中通过SHOW CREATE TABLE进行了更改。不工作=像第一个一样超时是的。这是我的第一个请求,带有
不在
的第二个请求应该做与
左连接完全相同的事情。。。其中t2.id不为NULL
。我在原来的帖子中通过SHOW CREATE TABLE进行了更改。不工作=像第一个一样超时是的。这可能会导致非常缓慢的加入
!这可能会导致非常缓慢的
加入
SELECT  ...
    FROM t1
    LEFT JOIN t2  ON t2.foo = t1.foo
    WHERE t2.id IS NULL;   -- Note