I have an app where I pull down 5,000 records. I started with DAL and db.item.ALL and it was taking around 4 seconds. I added 5 fields to the select() which got it down to around 2 seconds. Then I implemented the same thing with executesql and got it down to 500 ms.
So, selecting only the fields you need is a good optimization. But going with raw SQL is much better. --