
我现在有一个查询语句: select uuid, feature from faces where uuid in (uuid1, uuid2,....)
其中, faces 表中的数据量千万级别,而查询条件 in 后边的 uuid 集合大约几千条,是通过其他方式获取到的 uuid 集合,直接在 sql 语句中使用
现在我如果直接执行这条语句,性能很差,个人 PC 执行需要花费 30 多秒,实在是太慢了。
请教各位有没有什么优化方案。
1 F281M6Dh8DXpD1g2 2016-06-17 10:11:16 +08:00 via iPhone in 改成 join |
2 haoqiangim 2016-06-17 10:21:03 +08:00 给 uuid 加个 index 呀。 |
3 ovear 2016-06-17 10:42:06 +08:00 |
4 JiShuTui 2016-06-17 10:47:06 +08:00 根据 3 楼的链接,用 temporary table 也就是临时表 |
5 zrp1994 2016-06-17 10:52:41 +08:00 同样遇到过这种情况,数据量快到一亿。从数据库结构来说,分表比较靠谱。 |
6 realpg PRO 1000 万条记录 执行 5000 次 select * from table where uuid= 也不用 30 秒吧 你确定 uuid 有索引?以及你的磁盘 IO 适配千万行的数据量 |
7 jetyang 2016-06-17 11:08:15 +08:00 先确定 uuid 有没有索引, in 的效率很高的,几千个 uuid 有点多,但不至于这么慢 |
8 alouha 2016-06-17 11:34:27 +08:00 平时也遇到这样的问题,基本上都是先从缓存里取,找不到再查数据库…… |
9 Weixiao0725 2016-06-17 12:12:11 +08:00 select A.uuid, A.feature from faces as A, (select uuid from table where condition) as B where A.uuid = B.uuid |