The example was to do a count(*) in VFP. You don't have these system tables.
SELECT SCHEMA_NAME(schema_id) AS [SchemaName], [Tables].name AS [TableName], SUM([Partitions].[rows]) AS [TotalRowCount] FROM sys.tables AS [Tables] JOIN sys.partitions AS [Partitions] ON [Tables].[object_id] = [Partitions].[object_id] AND [Partitions].index_id IN ( 0, 1 ) -- WHERE [Tables].name = N'name of the table' GROUP BY SCHEMA_NAME(schema_id), [Tables].name; You never have to count the table rows itself. I wasn't going to show this thinking that it wasn't viable in VFP. On Sat, Oct 24, 2020 at 6:34 PM MB Software Solutions, LLC < mbsoftwaresoluti...@mbsoftwaresolutions.com> wrote: > Hi Stephen, > > Your reply doesn't help the matter in question but I'll play along. ;-) > > On "real DBMS" systems like your example, shouldn't it use the header or > meta-data to know the record count rather than load the whole thing into > memory? That doesn't seem right. > > > On 10/24/2020 11:25 AM, Stephen Russell wrote: > > I just did a count(*) from one of our biggest tables. It took 2 min to > > load it into memory the first time. > > SELECT count(*) cnt > > FROM [erplndb].[dbo].[glTable600] > > > > cnt > > 138,371,855 > > > > The second time I run this it only takes .03 seconds. The size of the > > table and index is a mere 364 gigs today. > > > > > > > > On Fri, Oct 23, 2020 at 2:24 PM MB Software Solutions, LLC < > > mbsoftwaresoluti...@mbsoftwaresolutions.com> wrote: > > > >> The WHERE clause was something to count but I don't think it was > >> optimizable because no index based on it. (Vague recollection; not 100% > >> sure.) > >> > >> SET MULTILOCKS is ON. > >> > >> > >> On 10/22/2020 3:36 PM, Richard Kaye wrote: > >>> True. My next guess is it's using the index because your WHERE clause > >> is Rushmore optimized. So it still doesn't need to move the record > pointer > >> in the source table. And I'll return to how your environment is setup. > I'd > >> have to go read the fine docs to understand why moving the record > pointer > >> is also trying to lock the row. Do you have SET MULTILOCKS ON? > >>> -- > >>> > >>> rk > >>> > >>> -----Original Message----- > >>> From: ProfoxTech <profoxtech-boun...@leafe.com> On Behalf Of Richard > >> Kaye > >>> Sent: Thursday, October 22, 2020 3:28 PM > >>> To: profoxt...@leafe.com > >>> Subject: RE: COUNT FOR hangs on record locking, but SQL - SELECT > >> COUNT(*) works with no issue. Why? > >>> Leaving aside the environment stuff like SET EXCLUSIVE and SET > >> MULTILOCKS, my first guess is COUNT FOR actually moves the record > pointer > >> through every row in the table, Whereas SELECT COUNT() is reading the > >> header. > >>> -- > >>> > >>> rk > >>> > >>> -----Original Message----- > >>> From: ProfoxTech <profoxtech-boun...@leafe.com> On Behalf Of MB > >> Software Solutions, LLC > >>> Sent: Thursday, October 22, 2020 3:24 PM > >>> To: profoxt...@leafe.com > >>> Subject: COUNT FOR hangs on record locking, but SQL - SELECT COUNT(*) > >> works with no issue. Why? > >>> VFP9SP3 > >>> > >>> Why would a COUNT FOR hang ("Attempting to lock") whereas my easy > >> workaround is SELECT COUNT(*) FROM SomeCursor WHERE <<yada yada > yada>> ?? > >>> tia, > >>> --Mike > >>> > >>> [excessive quoting removed by server] _______________________________________________ Post Messages to: ProFox@leafe.com Subscription Maintenance: https://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: https://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: https://leafe.com/archives This message: https://leafe.com/archives/byMID/CAJidMY+rgm+DyMzvwWKSEuJvRaXKnC-fk9=j_r=n7fgnug7...@mail.gmail.com ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.