【发布时间】:2021-10-06 09:49:29
【问题描述】:
我有一张桌子;
Orders
* id INT NN AN PK
* userid INT NN
* is_open TINYINT NN DEFAULT 1
* amount INT NN
* desc VARCHAR(255)
还有我经常运行的查询SELECT * FROM orders WHERE userid = ? AND is_open = 1;。我想针对这个查询优化数据库,我目前有两个选择;
- 将已关闭订单 (
is_open = 0) 移动到不同的表,因为当前未结订单将相对小于已关闭订单,从而最大限度地减少查找时要扫描的行 - 设置唯一键约束:
ALTER TABLE orders ADD CONSTRAINT UNIQUE KEY(id, userid);
我不知道后者的表现如何,我知道前者会有助于提高表现,但我不知道这是否是最佳实践方面的好方法。
任何其他想法将不胜感激。
【问题讨论】:
标签: mysql optimization query-optimization