Hi!
The only useful thing the database abstraction layer does is make it painless to switch database engines. It gives unified methods for access to any db engine so it's easy to switch engines without modifying code.
As to the database abstraction layer, I recommend the most simple. Actually, with most engines you only need to make SELECT queries and execute delete/insert/update queries against the database. I use PHPLIB database abstraction class and am most happy with it. ADODB seems to be more advanced since it gives you a way to learn a type of field being pulled from the database and many other things, but unless you're coding a super database editor, you don't need it. All you need is basically three methods:
- firstrow() - jump to first result
- getrow() - get row as associative array
- numrows() - number of rows in result
- query() - to execute query
You might find it more efficient to use a different method than getrow(), since associative arrays are slower, but I disagree - they are better to understand, they require only one call to the database engine per row, and in my experience they're quite fast.
If you really want to find the most efficient DBA layer, browse each one's code and try to figure out which one is the the most balanced combination of size / memory / your needs.
Further on down the road, you'll understand you need another very lightweight abstraction layer over other abstraction layers for SELECTs (with methods GetFirst, GetNext methods). This is what I did and it makes switching between db abstraction layers a snap.
Best,
Stas