我select count(*) from table,300万数据, 需要15秒左右,
其他机器这个数据量只需要不到一秒?
请问我该如何优化

解决方案 »

  1.   

    select count(1) from table
      

  2.   

    select count(1) from table.
      

  3.   

    select (某一字段) from table 试试。
    select (*) 的话,全表扫描,太费时间了。
      

  4.   

    建立索引是最直接的方式了,可是优化方式很多,如果是多块cpu,还可以使用parallel的方式,不过,才300百万数据,应该是pc机之类的机器吧。如果只是想看一下这个表里的条数,告诉你一个最直接的方式,
    select num_rows from all_tables where tablename = 'TABLE'
      

  5.   

    兄弟,你表之前是不是有很多数据,被你删除得只剩300W了?
          你先把你的数据插入到一个新表吧,然后再查询新表看看。
    create table newtable as select * from oldtable ;
    如果还是很慢的话那就是你数据库参数或者你电脑有问题了。其实select count(1) 与 select count(*) 是没区别的,这是大师的书籍里面看到的。
    但老是有些人会说count(1)要快...
      

  6.   

    count(*)会全表检查  用count(1)