我希望从1M行的表中获取最后10行.
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`updated_date` datetime NOT NULL,
PRIMARY KEY (`id`)
)
Run Code Online (Sandbox Code Playgroud)
这样做的一种方法是 -
select * from test order by -id limit 10;
**10 rows in set (0.14 sec)**
Run Code Online (Sandbox Code Playgroud)
另一种方法是 -
select * from test order by id desc limit 10;
**10 rows in set (0.00 sec)**
Run Code Online (Sandbox Code Playgroud)
所以我对这些查询进行了"解释" -
以下是我使用'order by desc'的查询结果
EXPLAIN select * from test order by id desc limit 10;
Run Code Online (Sandbox Code Playgroud)

以下是我使用'order by -id'的查询结果
EXPLAIN select * from test order by -id …Run Code Online (Sandbox Code Playgroud) class CDR(models.Model):
order = models.ForeignKey(Order)
call = models.ForeignKey(Call)
start_date = models.DateTimeField(auto_now_add=True)
end_date = models.DateTimeField(null=True)
remark = models.CharField(max_length=200, null=True)
class CDRAdmin(admin.ModelAdmin):
search_fields = ('order__id',)
raw_id_fields = ('call', 'order')
list_display = ('call', 'order', 'start_date', 'remark')
models = CDR
Run Code Online (Sandbox Code Playgroud)
由于 CDR 表 Call 和 Order 中有 2 个外键,但是为了在 list_display 中显示这些 id,它会与 Call 和 Order 表连接,并且由于所有这 3 个表都有大量数据行,因此会导致查询速度变慢。
有没有办法在没有加入的情况下解决它?
当我在 list_display 中使用 call__id 和 order__id 时,它会引发ImproperlyConfigured,而没有 __id 它会__repr__在连接结果上显示对象。