【发布时间】:2014-10-10 23:01:58
【问题描述】:
我有一个大的用户表 (3M),结构:
age (int)
country (FK)
city (text)
gender (text)
active (bool)
我的目标是搜索给定年龄区域、性别、城市和国家/地区的 15 位用户(偏爱活跃用户)。
由于表格的大小,我遇到了两个问题:
即使有索引,也需要很长时间(几百 毫秒)
每次运行查询时,结果都必须不同。目前我执行 使用 LIMIT 30 查询并从中获取随机 15 个结果,但是 30 个结果总是一样的。整张桌子太大而不能做 洗牌。
有克服类似问题的常用解决方案吗?
数据库服务器是 MySQL,在 Django 中实现。我也可以访问 Redis 缓存。
【问题讨论】:
-
请发布您尝试执行的查询。另外,如果可能的话,发布
explain select...的结果 -
想一想,你可以使用不同偏移量的限制,第一次运行会前 15,下一次运行会给出 15-30 等的名称
-
连同查询和
explain select...,粘贴 CREATE TABLE 语句和所有关联的 CREATE INDEX 语句。
标签: mysql sql django performance