首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用key列的Where子句仍然会出现错误。

使用key列的Where子句仍然会出现错误。
EN

Stack Overflow用户
提问于 2017-03-22 13:41:54
回答 1查看 942关注 0票数 0

我有一个表,用作从另一个表中查找外键。该表非常简单,包含一个ID列,其中包含主键和JSON列。我想从这张表中删除被遗弃的条目。

我试着运行这个脚本:

代码语言:javascript
复制
DELETE 
FROM `ate`.`test_configuration`
WHERE `ate`.`test_configuration`.`ID` NOT IN (SELECT DISTINCT `ate`.`index`.`TestID` from `ate`.`index`);

但是遇到了一个错误,说明我没有使用where子句,该子句使用key列:

错误代码: 1175。您正在使用安全更新模式,并且尝试更新一个表,但没有使用键列禁用安全模式的位置,在Preferences -> SQL中切换该选项并重新连接。

这令人困惑,因为where子句确实使用了主键列。我知道,我可以disable safe mode as part of my script作为一个解决办法,但我仍然想了解为什么我要得到这个错误。如果可能,我想避免不安全的更新。

EN

回答 1

Stack Overflow用户

发布于 2017-03-22 14:42:36

我认为优化器只是不能有效地使用索引来进行这样的查询--所以它会进行全表扫描。

test_configuration中有多少行,其中有多少行将被删除?

(您可能会尝试使用索引提示来强制优化器在查询中使用索引,只是不确定您的mysql版本是否支持索引)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42953398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档