求助 MySQL 建表 schema 的优化

2019-10-31 10:23:48 +08:00
 xiaoyaocmx

v 友们大家好… 我现在做的 project 要求对于 mysql 的 query 尽可能的做优化,完全没有插入和更新操作,纯粹 get。现在定的 schema 是 user id 和 timestamp,对于 userid 做了 index。我现在想优化 range query,比如对于如下 query “user id 在范围 A~B, tiemestamp 在 C~D 之间”,要返回所有行。

请问有什么其他可以优化的点吗,我在看 mysql 的官方文档时发现用 BETWEEN ... AND 可以提高速度,但是 database 这边还可以做什么优化呢?有针对 range 做的 index 吗?感谢大家!

5312 次点击
所在节点    MySQL
26 条回复
littleylv
2019-10-31 15:27:22 +08:00
歪个楼,楼主是海归,或者在外企,或者在国外?

否则这种中文中夹杂着不是必要用英文的英文,实话说挺反感的
Canvas26
2019-10-31 15:45:50 +08:00
@littleylv 也就看到“项目”和“索引”两个可以翻译过来的,其他 mysql 的名词不翻译更自然吧
littleylv
2019-10-31 15:52:14 +08:00
@Canvas26 #22
“query”一般叫查询没问题吧
“performance”叫性能也没问题吧
“overhead”
“还是说 sharding 到不同的 machine 上呀”
“这个 column 做个 sorting”
crclz
2019-10-31 18:59:25 +08:00
看看平均情况下,符合 timestamp 筛选条件的行多,还是符合纯 userid 筛选条件的行多。
假如符合 userid 筛选条件的范围的行少,那么就在 userid 加聚簇索引。不敢保证是最优的。
然后和 index(userid,timestamp)还有 index(timestamp, userid)比一比。
最后记得延迟关联。
xiaoyaocmx
2019-10-31 21:04:41 +08:00
@littleylv 谢谢,身边同学讨论这么惯了没注意到…下次注意哈
xiaoyaocmx
2019-10-31 21:08:16 +08:00
@hantsy 好的,我研究一下…感谢

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

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

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

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

© 2021 V2EX