MySQL 查询一条语句里有一个索引就够了吗?比如 q = User.query.filter(User.id==userid, User.register_time > last_year).all() 只加一个 id 的索引可行?

2017-09-30 12:52:00 +08:00
 miniyao

用 sqlalchemy 在 mysql 里查用户数据:

q = User.query.filter(User.id=userid, User.register_time > last_year).all()

只给 User 表的 id 加索引就够了吗?有没有必要给 User 表的 register_time 也增加索引呢?加两个索引时间检索速度有提升吗?

4520 次点击
所在节点    MySQL
7 条回复
teddy2725
2017-09-30 13:08:44 +08:00
加一个联合索引
nullcoder
2017-09-30 16:24:04 +08:00
设计到表设计的问题,要结合具体的业务场景来定。
加索引检索速度提升,但存储成本增加
petelin
2017-09-30 17:32:49 +08:00
可行, userid 应该是唯一的吧? 数据库会直接捞出那条记录, 然后比对一下 时间.
GTim
2017-09-30 18:02:50 +08:00
可行,看这字段
miniyao
2017-09-30 18:19:17 +08:00
@petelin
@GTim

是的,userid 是唯一的。
hand515
2017-09-30 19:08:34 +08:00
既然唯一,后面的注册时间条件程序判断都可以了
tb4649120073rs
2017-09-30 21:10:41 +08:00
@miniyao
如果 userid 是唯一的,而 where 条件里面有 User.id=userid
已经可以直接根据 userid 拿出一行记录,一般够用了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/394838

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX