首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用phpmyadmin的GUI与使用alter更改字段类型会产生不同的行为

使用phpmyadmin的GUI与使用alter更改字段类型会产生不同的行为
EN

Stack Overflow用户
提问于 2019-12-08 18:11:16
回答 1查看 80关注 0票数 1

我的数据库有两个表:支付和预订。

payments表有50万行,我有一个简单的查询:

select * from payments where payments.booking_id in(64791, 64792,...,65791)

in操作符内有1000个预订ids。

下面是mysql的explain的输出。这表明我的表支付索引并没有被使用,而mysql对支付进行了全面扫描,table.It大约需要800~900 my才能执行。

经过一些搜索,我发现bookings.id字段是unsigned int(10),而payments.booking_id是signed int(11)。因此,mysql必须对unsigned int(10)进行1000次强制转换才能使用我的索引。

通过从phpmyadmin的GUI中更改payments.booking_id字段类型,如下面所示,解决了我的问题。

现在,我的查询使用我的索引,并在33 my中执行。

我的问题是,当我使用mysql的alter执行相同的更改时:

ALTER TABLE payments CHANGE booking_id booking_id INT(10) UNSIGNED NULL DEFAULT NULL;

原始查询始终不使用我的索引。

我试过了

index

  • reseting

  • 删除和重新创建RESET QUERY CACHE;

  • Restarting mysql服务器

的查询缓存

百无所成

我正在使用:

4.9.0.1

  • mysql-server: 10.3.16-MariaDB

  • phpmyadmin:
EN

回答 1

Stack Overflow用户

发布于 2019-12-20 07:15:37

我认为您在NULLNOT NULL之间存在不一致之处。

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

https://stackoverflow.com/questions/59238429

复制
相关文章

相似问题

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