[AccessD] Fastest Way To Get Data Field From Recordset

Heenan, Lambert Lambert.Heenan at AIG.com
Wed Jun 29 12:21:16 CDT 2005


How slow is slow?

There are at least three ways to access a field in a recordset via VB.

Rs!FieldName
Rs.Fields("FieldName")  and
Rs("FieldName")

Each of these in turn has two variations. You can use
	Rs.this
	Rs.that
	Rs.thenextthing

Or you can write 
	With Rs
		.this
		.that
		.thenextthing
	End With

The use of With / End With used to be recommended by MS as when you
referenced the Rs object Access would apparently refresh its collections,
including the collection of recordsets, and this slowed execution. Using
with/end with cuts the number of references to Rs down to one. It also
reduces the amount of typing that has to be done.

However. I just did some testing in Access 2002, and is seems the alleged
speed benefit of with/end with does not happen. Perhaps the whole collection
refresh issue has been fixed now. Which leaves us with the question of which
syntax *is* faster?  I ran some tests and the results suggest that it does
not make any damned difference. See below...

The code that produces these results simply opens a recordset and then
accesses each record in turn, pulling the value of one field from each
record.

NOT using With Rs
-----------------
1/ Using Rs.Fields('FieldName')
Time to access 683200 records: 4.414063 Seconds
-----------------
2/ Using Rs!FieldName
Time to access 683200 records: 4.4375 Seconds
-----------------
3/ Using With and .Fields('FieldName')
Time to access 683200 records: 4.347656 Seconds
-----------------
4/ Using With and rs('FieldName')
Time to access 683200 records: 4.425781 Seconds
-----------------
5/ Using With and rs!FieldName
Time to access 683200 records: 4.34375 Seconds

So when looping through 680k records it seems like only a few milliseconds
are available to be gained. If you only want to look at one record in a
piece of code then we are approaching quibbling over nanoseconds.

Lambert

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Charlotte Foust
Sent: Wednesday, June 29, 2005 10:47 AM
To: Access Developers discussion and problem solving
Subject: RE: [AccessD] Fastest Way To Get Data Field From Recordset


The first option  is the slowest way.

Charlotte Foust


-----Original Message-----
From: paul.hartland at fsmail.net [mailto:paul.hartland at fsmail.net] 
Sent: Wednesday, June 29, 2005 7:37 AM
To: accessd
Subject: [AccessD] Fastest Way To Get Data Field From Recordset


To all,

I have taken over a project and where I would normally use something like

strMinPayroll = rsMinPayroll.Fields("LowPayrollNo")

it is written as

strMinPayroll = rsMinPayroll!LowPayroll

Is there a difference in speed with these, i.e. is one more efficient than
the other etc....

Thanks in advance for any help on this...

Paul Hartland

-- 

Whatever you Wanadoo:
http://www.wanadoo.co.uk/time/

This email has been checked for most known viruses - find out more at:
http://www.wanadoo.co.uk/help/id/7098.htm
-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com
-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com



More information about the AccessD mailing list