Lol! perhaps you need to familiarize them with the term GIGO. On Fri, Jun 12, 2009 at 9:45 AM, Rob Wolfe <wolfe....@gmail.com> wrote:
> > > > On Jun 12, 11:20 am, Michael Moore <michaeljmo...@gmail.com> wrote: > > David makes good points. I personally don't like SELECT count(1) from > > MYTABLE; because it makes the meaning unclear. > > What does "1" have to do with what you are trying to achieve? Nothing. > Are > > you trying to count how many 1's are in your table? Of course not.... > > > > read more » > > > > If "SELECT count(1)" means something, what does "SELECT count(2)" mean? > How > > about SELECT count ('x')? > > > > By using 1 instead of *, all you have done is taken a well defined > operator > > '*' and replaced it with something that is obscure and confusing. > > > > Regards, > > Mike > > > > > > > > On Fri, Jun 12, 2009 at 6:10 AM, ddf <orat...@msn.com> wrote: > > > > > On Jun 12, 4:37 am, sonty <saurabh.zen...@gmail.com> wrote: > > > > I would say > > > > > > select count(1) from yourtablename; > > > > > > BR, > > > > Sonty > > > > > > On Jun 10, 9:15 pm, Michael Moore <michaeljmo...@gmail.com> wrote: > > > > > > > select count(*) from yourtablename; > > > > > > > regards, > > > > > Mike > > > > > > > On Wed, Jun 10, 2009 at 8:51 AM, Michael Lam < > > > michael.y....@hotmail.com>wrote: > > > > > > > > Hi all, > > > > > > > > I am kinda new to Oracle. So, really appreicate your help! > > > > > > > > I wonder what's the best way to retrieve the total number of > record > > > of > > > > > > a table. I googled it for a while and someone mentioned that it > was > > > > > > discussed in google group before. Would you mind if you can give > me > > > > > > direction regarding this please? > > > > > > > > thanks > > > > > > Michael- Hide quoted text - > > > > > > > - Show quoted text -- Hide quoted text - > > > > > > - Show quoted text - > > > > > Using count(1) is no better than using count(*): > > > > > SQL> select count(*) > > > 2 from dbaobjs; > > > > > COUNT(*) > > > ---------- > > > 69226 > > > > > Execution Plan > > > ---------------------------------------------------------- > > > Plan hash value: 708967174 > > > > > ---------------------------------------------------------------------- > > > | Id | Operation | Name | Rows | Cost (%CPU)| Time | > > > ---------------------------------------------------------------------- > > > | 0 | SELECT STATEMENT | | 1 | 286 (1)| 00:00:04 | > > > | 1 | SORT AGGREGATE | | 1 | | | > > > | 2 | TABLE ACCESS FULL| DBAOBJS | 69226 | 286 (1)| 00:00:04 | > > > ---------------------------------------------------------------------- > > > > > Statistics > > > ---------------------------------------------------------- > > > 287 recursive calls > > > 0 db block gets > > > 1067 consistent gets > > > 1024 physical reads > > > 0 redo size > > > 420 bytes sent via SQL*Net to client > > > 416 bytes received via SQL*Net from client > > > 2 SQL*Net roundtrips to/from client > > > 6 sorts (memory) > > > 0 sorts (disk) > > > 1 rows processed > > > > > SQL> alter system flush shared_pool; > > > > > System altered. > > > > > SQL> select count(1) > > > 2 from dbaobjs > > > 3 / > > > > > COUNT(1) > > > ---------- > > > 69226 > > > > > Execution Plan > > > ---------------------------------------------------------- > > > Plan hash value: 708967174 > > > > > ---------------------------------------------------------------------- > > > | Id | Operation | Name | Rows | Cost (%CPU)| Time | > > > ---------------------------------------------------------------------- > > > | 0 | SELECT STATEMENT | | 1 | 286 (1)| 00:00:04 | > > > | 1 | SORT AGGREGATE | | 1 | | | > > > | 2 | TABLE ACCESS FULL| DBAOBJS | 69226 | 286 (1)| 00:00:04 | > > > ---------------------------------------------------------------------- > > > > > Statistics > > > ---------------------------------------------------------- > > > 293 recursive calls > > > 0 db block gets > > > 1067 consistent gets > > > 0 physical reads > > > 0 redo size > > > 420 bytes sent via SQL*Net to client > > > 416 bytes received via SQL*Net from client > > > 2 SQL*Net roundtrips to/from client > > > 6 sorts (memory) > > > 0 sorts (disk) > > > 1 rows processed > > > > > SQL> > > > > > Yet another device, which is no more efficient, is to select the max > > > (rownum) from the desired table: > > > > > SQL> select max(rownum) > > > 2 from dbaobjs; > > > > > MAX(ROWNUM) > > > ----------- > > > 69226 > > > > > Execution Plan > > > ---------------------------------------------------------- > > > Plan hash value: 4046134655 > > > > > ----------------------------------------------------------------------- > > > | Id | Operation | Name | Rows | Cost (%CPU)| Time > > > | > > > ----------------------------------------------------------------------- > > > | 0 | SELECT STATEMENT | | 1 | 286 (1)| 00:00:04 > > > | > > > | 1 | SORT AGGREGATE | | 1 | | > > > | > > > | 2 | COUNT | | | | > > > | > > > | 3 | TABLE ACCESS FULL| DBAOBJS | 69226 | 286 (1)| 00:00:04 > > > | > > > ----------------------------------------------------------------------- > > > > > Statistics > > > ---------------------------------------------------------- > > > 293 recursive calls > > > 0 db block gets > > > 1067 consistent gets > > > 0 physical reads > > > 0 redo size > > > 423 bytes sent via SQL*Net to client > > > 416 bytes received via SQL*Net from client > > > 2 SQL*Net roundtrips to/from client > > > 6 sorts (memory) > > > 0 sorts (disk) > > > 1 rows processed > > > > > SQL> > > > > > Of course, if statistics are current and one doesn't mind a possibly > > > inexact number there is always the option of querying USER_TABLES (but > > > in terms of recursive calls using count() is more efficient): > > > > > SQL> select table_name, num_rows > > > 2 from user_tables > > > 3 where table_name = 'DBAOBJS' > > > 4 / > > > > > TABLE_NAME NUM_ROWS > > > ------------------------------ ---------- > > > DBAOBJS 69226 > > > > > Execution Plan > > > ---------------------------------------------------------- > > > Plan hash value: 2777635855 > > > > > > ------------------------------------------------------------------------------------------------------ > > > | Id | Operation | Name | Rows | > > > Bytes | Cost (%CPU)| Time | > > > > > > ------------------------------------------------------------------------------------------------------ > > > | 0 | SELECT STATEMENT | | 1 > > > | 131 | 10 (10)| 00:00:01 | > > > | 1 | NESTED LOOPS OUTER | | 1 > > > | 131 | 10 (10)| 00:00:01 | > > > | 2 | NESTED LOOPS OUTER | | 1 > > > | 127 | 9 (12)| 00:00:01 | > > > | 3 | NESTED LOOPS OUTER | | 1 > > > | 119 | 8 (13)| 00:00:01 | > > > | 4 | NESTED LOOPS OUTER | | 1 > > > | 114 | 7 (15)| 00:00:01 | > > > | 5 | NESTED LOOPS | | 1 > > > | 103 | 6 (17)| 00:00:01 | > > > | 6 | NESTED LOOPS | | 1 > > > | 100 | 5 (20)| 00:00:01 | > > > | 7 | MERGE JOIN CARTESIAN | | 1 > > > | 67 | 4 (25)| 00:00:01 | > > > |* 8 | HASH JOIN | | 1 > > > | 31 | 1 (100)| 00:00:01 | > > > |* 9 | FIXED TABLE FULL | X$KSPPI | 1 > > > | 27 | 0 (0)| 00:00:01 | > > > | 10 | FIXED TABLE FULL | X$KSPPCV | 1915 > > > | 7660 | 0 (0)| 00:00:01 | > > > | 11 | BUFFER SORT | | 1 > > > | 36 | 4 (25)| 00:00:01 | > > > |* 12 | TABLE ACCESS BY INDEX ROWID| OBJ$ | 1 > > > | 36 | 3 (0)| 00:00:01 | > > > |* 13 | INDEX RANGE SCAN | I_OBJ2 | 1 > > > | | 2 (0)| 00:00:01 | > > > |* 14 | TABLE ACCESS CLUSTER | TAB$ | 1 > > > | 33 | 1 (0)| 00:00:01 | > > > |* 15 | INDEX UNIQUE SCAN | I_OBJ# | 1 > > > | | 0 (0)| 00:00:01 | > > > | 16 | TABLE ACCESS CLUSTER | TS$ | 1 > > > | 3 | 1 (0)| 00:00:01 | > > > |* 17 | INDEX UNIQUE SCAN | I_TS# | 1 > > > | | 0 (0)| 00:00:01 | > > > | 18 | TABLE ACCESS CLUSTER | SEG$ | 1 > > > | 11 | 1 (0)| 00:00:01 | > > > |* 19 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 1 > > > | | 0 (0)| 00:00:01 | > > > |* 20 | INDEX RANGE SCAN | I_OBJ1 | 1 > > > | 5 | 1 (0)| 00:00:01 | > > > |* 21 | INDEX RANGE SCAN | I_OBJ1 | 1 > > > | 8 | 1 (0)| 00:00:01 | > > > |* 22 | INDEX RANGE SCAN | I_USER2 | 1 > > > | 4 | 1 (0)| 00:00:01 | > > > > > > ------------------------------------------------------------------------------------------------------ > > > > > Predicate Information (identified by operation id): > > > --------------------------------------------------- > > > > > 8 - access("KSPPI"."INDX"="KSPPCV"."INDX") > > > 9 - filter("KSPPI"."KSPPINM"='_dml_monitoring_enabled') > > > 12 - filter(BITAND("O"."FLAGS",128)=0) > > > 13 - access("O"."OWNER#"=USERENV('SCHEMAID') AND > > > "O"."NAME"='DBAOBJS') > > > 14 - filter(BITAND("T"."PROPERTY",1)=0) > > > 15 - access("O"."OBJ#"="T"."OBJ#") > > > 17 - access("T"."TS#"="TS"."TS#") > > > 19 - access("T"."TS#"="S"."TS#"(+) AND "T"."FILE#"="S"."FILE#"(+) > > > AND > > > "T"."BLOCK#"="S"."BLOCK#"(+)) > > > 20 - access("T"."BOBJ#"="CO"."OBJ#"(+)) > > > 21 - access("T"."DATAOBJ#"="CX"."OBJ#"(+)) > > > 22 - access("CX"."OWNER#"="CU"."USER#"(+)) > > > > > Statistics > > > ---------------------------------------------------------- > > > 721 recursive calls > > > 0 db block gets > > > 220 consistent gets > > > 0 physical reads > > > 0 redo size > > > 488 bytes sent via SQL*Net to client- Hide quoted text - > > > > - Show quoted text - > > And this is precisely why I stopped being a DBA and went over to the > dark side (Business Intelligence). While i always found the internals > of the database utterly fascinating (and still do), I would often find > myself in a conversation with a developer that had managed to pick up > some bit of misinformation or an incredibly bad habit that kept > bringing a system to its knees and they would swear that the way they > were doing it was blessed by some well respected (by them) authority > even when the analysis of what the database was actually doing showed > the contrary. > > Now I just have to deal with the easy stuff... Like how to convince > VPs that if they let their people put crap in the ERP system then they > should be unsurprised that the dashboards look weird. And no, it isn't > really any easier, just a different kind of frustration and you can't > tell a VP that they have a suboptimal understanding of something > unless you get really lucky and find one that doesn't know what the > word suboptimal means. > > Rob > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Oracle PL/SQL" group. To post to this group, send email to Oracle-PLSQL@googlegroups.com To unsubscribe from this group, send email to oracle-plsql-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/Oracle-PLSQL?hl=en -~----------~----~----~----~------~----~------~--~---