gpt4 book ai didi

MySQL insert, update-heavy, 按索引排序

转载 作者:行者123 更新时间:2023-11-29 06:55:49 28 4
gpt4 key购买 nike

我目前正在设计一个数据库,其中有一个表 events,该表将插入(和更新)-heavy(我预计每分钟插入 1,000 到 5,000 次),但也需要按日期排序。

每个事件都有一个read bool 字段,user_id,并按updated_at(日期时间)DESC 排序。选择语句类似于

SELECT * FROM `events` WHERE `read`=0 AND `user_id`='<user id>' ORDER BY `updated_at` DESC

现在,我正在考虑在 readuser_idupdated_at 上使用索引来优化获取和排序,但是这是否意味着整个索引将在一个

UPDATE `events` SET `read`='1' WHERE `id`='<event id>'

?

在这种情况下,性能效率最高(插入、更新、选择)的解决方案是什么?

最佳答案

MySQL 每次查询每个表只使用一个索引(有时当索引合并发生时它使用多个索引)所以创建多个索引不会加速查询。

如果我没记错的话,最好先在索引中使用最具鉴别力的选择器,这样 user_id.read.updated_at 可能是一个很好的解决方案。

我不知道更新索引是否非常昂贵,但由于 MySQL 索引默认情况下是一棵树,如果 read 更改引擎只需在 user_id< 下运行 leaf 所以影响可能会降低。

尽管如此,您可以只在 user_id.updated_at 上建立索引,而让 MySQL 过滤 read,但大多数时候从表中排序数据比过滤成本更高。

关于MySQL insert, update-heavy, 按索引排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12767433/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com