Have you investigated using a Stored Procedure that does both inserts?

----------------------------------
William Seiter


-----Original Message-----
From: Les Mizzell [mailto:lesm...@bellsouth.net] 
Sent: Thursday, October 09, 2014 9:31 AM
To: cf-talk
Subject: Avoiding a boat load of queries inserting multiple records - Better
Way?


I've got an application that imports email list from Excel sheets. 
Mostly working fine, but I've got one spot where I'd like to optimize things
if I could.

Once the data is imported I run two queries against each email address:
1. see if the email address is already in the group in question 2. see if
this person has already unsubscribed from this list --->

If both of those return no records, and I've already run some other
validation making sure entered info is valid, I add everything to an array:

        <cfset mailREC[CurrentRow][1] = email />
        <cfset mailREC[CurrentRow][2] = fname />
        <cfset mailREC[CurrentRow][3] = lname />
        <cfset mailREC[CurrentRow][4] = other />

Now the problem ...
I need to do two inserts
   - first to enter the info into the email database
   - second to capture the ID from the first insert, and put that into a
relational table that assigns that address to the specified group.
I removed cfqueryparam from the below to make it more compact...

So, I loop through my array and enter all the records..

<loop......>
   <cfquery name="insertEMAIL">
     SET NOCOUNT ON
      ..... remainder of insert code
     SET NOCOUNT OFF
     SELECT @@IDENTITY AS fromLISTID
     </cfquery>

   <cfquery name="insertGROUP" >
       INSERT INTO nl_catREL ( groups_id, email_id )
        VALUES ( #req.thisGROUPID#, #insertLIST.fromLISTID# )
    </cfquery>
</loop......>

The problem is, some of these spreadsheets and have up to 5,000 or more
email addresses.
That means, just for the insert, two queries for each address = 10,000
queries.
If it was just one insert query, no big deal, as I could loop inside the
query tag itself and reduce it to one call. It's the two combined that are
giving me a headache. The application IS working the way it is, but shove a
15,000 email list into it, and it obviously chokes.

Is there a better way to set up my two insert queries above so it's not
making two calls for every single address?





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Order the Adobe Coldfusion Anthology now!
http://www.amazon.com/Adobe-Coldfusion-Anthology/dp/1430272155/?tag=houseoffusion
Archive: 
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:359427
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm

Reply via email to