SQL搜索查询在不同的服务器上的处理方式不同


SQL search query handled differently on different servers

我有一个非常奇怪的问题,好几天都无法解决。我已经做了很多测试,所以很多可能的根本原因现在都被排除在外,这为真正"异国情调"的可能性留下了空间,我需要一些新想法的帮助,因为我现在陷入了困境。

一些背景:网站源文件和数据库(都相同)安装在两个服务器Wamp和Lamp上。

我面临的问题是与搜索结果相关的网站查询。搜索查询是使用LEFT JOIN从两个SQL DB表构建的。联接由条目ID参数完成。这是一个搜索查询的例子:

$tables = $tblprefix."vehicles AS v
        LEFT JOIN ".$tblprefix."vehicles_car AS vc on v.id = vc.v_id LEFT JOIN ".$tblprefix."models AS model on v.model = model.id";         
} 
else { 
$fields = " v.*, vc.exterior_color";

搜索查询本身是正确的,并且在两台服务器上都能完美工作,所以这只是一个例子。

不同的场景-从CSV文件中,我上传了名为"车辆"的主DB表的条目。当上传后进行搜索时,结果显示所有上传的条目,即所有作品都是正确的。我已经厌倦了添加27000多行,并且所有行都显示得没有故障。然后我继续上传第二个表"vehicles_car"的条目。当插入大约200-215个条目时,所有作品都是正确的。

现在的问题是,当我在第二个表中插入超过210-220个条目时,搜索查询突然显示"无结果",但仅适用于安装在Lamp服务器上的网站。无论两个表中加载了多少条目,Wamp上的网站都能正常工作。出于某种原因,只有Lamp服务器上的查询不起作用,并且只有当第二个表的条目超过200个时。

注意:当显示"无结果"时,表条目的数量各不相同——它适用于215个条目,然后我再插入一个——显示"无效果",然后我删除最后一个条目,它继续显示"无成果"。再删除一个-"无结果",继续从第二个表中删除更多条目,它会突然再次显示正确的搜索结果。非常不一致的行为。

最奇怪的是,当查询显示"无结果"时,我从Lamp服务器导出了整个数据库,并将数据库导入到Wamp服务器。它在那里工作!!!

那么,有什么想法吗?可能是什么问题(我怀疑是DB中的某个问题)导致查询在一台服务器上工作,而在另一台服务器中不工作(并且只有当第二个联接表中存在超过一定数量的行时)??

Lamp Server-SQL 5.5.32 InnoDB,phpMyAdmin-2.8.0.1

Wamp服务器-SQL 5.6.4 InnoDB,phpMyAdmin-4.0.9

任何新的想法都将受到赞赏,因为我真的很困!!!

谢谢!

UPDATE:我刚刚清空了所有带有特殊字符的列,并将它们替换为两个表的第一行的单元格值(在可能的情况下,仅-ID自动递增单元格,例如未更改)。在Lamp服务器上观察到了相同的行为,不同之处在于现在SQL查询在第二个表中添加的不同行数上显示"无结果"。首次尝试添加2037行-"无结果"。删除了最后一行-"无结果",又删除了一行,全部罚款(2035行)。再次添加同一行(2036),全部精细,添加新行(2037)-全部精细。继续使用INSERT查询逐个添加行,现在是第2039行,搜索结果工作正常。这种不一致的行为从何而来?LAMP服务器可以处理的Left Join查询数量有任何"变量"限制,因为这是共享托管环境?它还能是什么?

更新2:我现在倾向于认为这与托管提供商服务有关,而不是与查询或DB本身有关。继续调查。

好的,所以在花了两周时间研究SQL查询并推动主机支持部门调查他们的问题后,发现max_join_size的限制设置为7000000,最终只返回大约2000多条记录。如果记录超过此限制,则服务器不会返回任何结果。美好的

事实证明,曾经是一个伟大的托管服务现在正成为*中的一个真正的痛苦。