我想 把最新的10条数据查询出来。最新意味着按时间(自增的id号)倒排序?select top 10 * from tables where users='sa' order by id desc
这样速度不是很慢?我个人认为这条sql内部执行的过程是:把user是sa的所有的全部查出来再倒排序再取出前10条来 。我想要的是查询出全部的来直接取前10条,意味着新插入的数据放到表前面怎么写插入sql呢?
insert...?
select top 10 * from tables where users='sa'

解决方案 »

  1.   

    写错了是
    不查询出全部的来,直接取前10条,意味着新插入的数据放到表前面怎么写插入sql呢?
      

  2.   

    我想要的是查询出全部的来直接取前10条,意味着新插入的数据放到表前面怎么写插入sql呢?
    指定索引,按照索引排序.没有你说的什么数据在前面后面之说法.
      

  3.   

    id建了索引了,我认为select top 10 * from tables where users='sa' order by id desc这条语句
    查询的过程中首先把是users 是aa 的数据全部查询出来,再倒排序,再取前10条这个过程对不对
      

  4.   

    insert into tables(col1,col2,,,,)
    select top 10 * from tables where users='sa'
      

  5.   

    我现在的问题是 想取出最新的10条数据 我会的一种办法是
    因为id是自增且是索引所以select top 10 * from tables where users='sa' order by id desc
    能达到这个效果但我认为
    查询的过程中首先把users 是aa 的数据全部查询出来,再倒排序,再取前10条这个过程对不对我觉得这样浪费资源
    →查询的过程中首先把users 是aa 的数据全部查询出来我不想把users 是aa 全部查出来再倒排我想如果新插入的数据能放到最前面那直接取前10条数据不就完了吗?这可行吗?
      

  6.   

    sql执行的过程就是这样子的,按照楼主的想法,好像没什么可能