Python 查找与最新条目对应的数据
我正在通过psycopg2处理数据库,我想在数据库中找到“最新”的条目。 似乎我不需要做任何排序来获得这个,因为我实际上只想要最新的。数据如下所示:Python 查找与最新条目对应的数据,python,postgresql,psycopg2,postgresql-9.2,Python,Postgresql,Psycopg2,Postgresql 9.2,我正在通过psycopg2处理数据库,我想在数据库中找到“最新”的条目。 似乎我不需要做任何排序来获得这个,因为我实际上只想要最新的。数据如下所示: id | x | y | param_a | param_b | param_c -------+-----+-----+----------------------------+-------------------------+------------------------
id | x | y | param_a | param_b | param_c
-------+-----+-----+----------------------------+-------------------------+---------------------------+------------+----------------+-------------
1 | 324 | 229 | 2013-03-27 22:41:39.052966 | 75.000 | 82.000
2 | 317 | 232 | 2013-03-27 22:41:39.185109 | 70.000 | 86.000
3 | 278 | 364 | 2013-03-27 22:41:39.203416 | 68.000 | 75.000
假设#3是最新的(在这个数据集中)。我想发现,如果不对整个数据库进行排序,随着时间的推移,数据集可能会变得相当大,因为数据通过串行端口快速流入
对于以下示例代码,我需要什么类型的查询
conn = psycopg2.connect(database = POSTGRESQL_DATABASE, host = POSTGRESQL_SERVER, user = POSTGRESQL_USERNAME, password = POSTGRESQL_PASSWORD)
cur = conn.cursor()
cur.execute("") #need help here
另外,如果我想找到N个最新的,有很大的区别吗?好的,最好的是:
SELECT * FROM mytable ORDER BY param_a DESC LIMIT 1
现在,就其本身而言,你认为这将表现不佳是正确的。但是,如果您向param_a添加一个索引,那么它实际上可以进行非常快速的索引查找,然后获取您正在查找的一条记录
因此,PostgreSQL的关键问题不是优化查询,而是优化数据库以使查询快速运行。简单的索引会创造奇迹
有趣的是,下面将在PostgreSQL上执行两次索引扫描查找(如果可用)(表足够大,数据选择性足够高):
所以请记住这一点。这是通过智能索引而不是智能查询来解决的
SELECT min(param_a), max(param_a) from mytable;