假设你有一个有n行的表,什么是在不排序的情况下将第一行记录在该表上的最有效的方法?
这是可以保证工作的,但随着记录数量的增加会变得更慢:
SELECT * FROM posts ORDER BY created_at DESC LIMIT 1;
更新:
如果有多个记录具有相同的created_at值,但仍需要排序,则更好:
SELECT * FROM posts ORDER BY id ASC LIMIT 1;
想象一下,一本有100万页和10亿行记录的账簿,要获得有史以来的第一条记录,您只需翻到第一页,并获得最上面的那一页,对吧?无论账本的大小如何,你都应该以同样的效率获得有史以来的第一条记
我在这里看到了类似的问题,但没有一个对我的情况有所帮助。
我有一个表,假设是测试(使用mysql MyISAM)
测试具有以下架构:
TID INT PRIMARY KEY AUTO_INCREMENT
TData varchar (data that i want to select)
TUserID INT (this will be joined with users table, same users can have many records here)
TViewedAt DATETIME (records each time user visits
场景1
我有一张桌子,假设是“成员”。在表"member“中,我有7个字段( memid、login_name、password、age、city、phone、country )。在我的表中有10K条记录。我需要获取一条记录。所以我像这样使用这个查询
mysql_query("select * from member where memid=999");
场景2
我有相同的表名为" member“,但是我像这个member和member_txt .So一样拆分表,在我的member_txt表中,我有memid,年龄,电话,城市,国家),在我的成员表中,我有mem
为了选择最后一条记录,当我的数据库是MySQL时,我使用了以下命令:
$result = mysql_query("SELECT Id
FROM test
ORDER BY LENGTH(Id), Id ASC");
$count = mysql_numrows($result);
if($count != 0) {
$lastid = mysql_result($result,$count-1,"Id");
}
...and它工作得很好。
但
当您知道只会有一条记录时,使用PHP从MySQL打印的最好方法是什么?
我的SQL语句是:
select user from users where user = 'norman';
这将只返回一条记录。那么打印它的最佳方式是什么呢?我现在做的是:
while ($info=mysql_fetch_assoc($data))
等
但是,对于多个记录,这是可以的。当只有一个的时候,有没有更好的方法呢?