No, the exercise was to count something of a specific criteria....not a
general RECCOUNT of the resulting dataset.
On 10/25/2020 9:00 PM, Stephen Russell wrote:
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/2856c372-9c14-c1e1-864c-1526b4bf1...@mbsoftwaresolutions.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.