I use SharePoint, InfoPath 2010
External Lists are generally on SQL 2008 or 2012 . n.b. I'm not a SQL person.
One of my applications have to query an everygrowing SQL dataset.
1. Get any inital "grunt work" - searching, querying and filtering etc. done by your customer database and not on your Sharepoint lists. In my case, a SQL server is much quicker than a SharePoint list.
Create SQL views or tables as required - these are your external content types and data connections within your InfoPath form.
My sql guy created a table with all the fields I needed for my data and an extra field 'set in infopath' - it's value was N.
I created a Search box on the InfoPath form with a button. - I used the following code to search my SQL data.
http://social.msdn.microsoft.com/Forums/sharepoint/en-US/5aa4519c-b8e0-4a7c-85b4-09f7e1d0747a/dynamic-sql-data-connection-in-infopath?forum=sharepointcustomizationprevious
All data was returned into a repeating section on my form - therefore there is 1 section per returned result.
My SQL data was a secondary data connection in infopath. I set a rule condition that if my 'set in infopath' data was selected in a particular repeating section, that's the data I want to use. Then I just created numerous set as field rules, to set fields in a 2nd view.