如何做好mysql数据表的索引?

发布于 2021-11-12 17:34:32 字数 203 浏览 790 评论 7

我用的mysql数据库,

char_id(角色ID号)

trade_type(交易类型,现在有39种类型,用1~39的int型表示)

money_type(货币类型,有四种货币,可以不必建索引)

date(10位int型的时间戳)

现在有一个表单,用户要根据角色ID,交易类型,时间进行记录查询,整张表有大概500W条记录,请问如何做索引好一些?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

伪装你 2021-11-15 04:01:37

WHERE TYPE IN (?,?,?) 这种固定参数的查询是不会全表扫描的 不信你explain一下看看

梦里兽 2021-11-15 03:59:31

老大都回答了 你还说没人回答 切

坏尐絯 2021-11-15 03:56:18

没人回答,看来我的问题是个菜鸟问题了。。

路还长,别太狂 2021-11-15 02:21:31

可能我没有描述好~~~

在数据表里,trade_type字段就是用1~39这种数字表示的。

比如第一个记录,trade_type是2
第二个记录,trade_type是15
第三个记录,trade_type是15
第四个记录,trade_type是28
……

但是前台页面是用checkbox表示可以多选,那么用户在选15,28时,我就用的where trade_type in (15,28)来查询的,这不可避免为会全盘扫描,在500多W数据记录下,所以就麻烦了。。

夜司空 2021-11-15 02:13:45

trade_type 是多个值??? 那你表怎么设计的啊

执手闯天涯 2021-11-14 23:32:52

谢谢老大。

但是最大的麻烦还是trade_type 这里在前端页面是39个checkbox来的,所以存在多选的可能,我用的in语句,就不可避免遇到全盘扫描,请问各位是怎么解决的啊?

离去的眼神 2021-11-14 22:55:26

时间可以单独做一个索引

其他两个类型你看是做复合索引还是单独建索引,自己试试吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文