First of all you should just rule out the use of SQL. You should not use SQL directly against SharePoint content databases. If you ever do modifications directly using SQL that SharePoint Farm becomes unsupported for ever. Even just doing reads makes your SharePoint Farm unsupported as long as they are occuring and may cause any kind of problems as SharePoint expects to control which locks are placed on which tables.
Regarding LINQ2SP vs CAML the preformance difference in reality is very little as long as they make the same queries.
What'll make the real difference between LINQ2SP and CAML is when the queries are very different and in that case it can go both ways.
In some cases developers will not know how to make an efficient CAML query (most common case is with joins), but will be able to make a LINQ query which the provider will translate into very efficient CAML and thereby only be a little slower than the CAML generated by a good SharePoint developer, but a lot faster than the CAML generated by a bad SharePoint developer.
In some cases the LINQ provider will not know how to generate the right CAML query and in that case it unfortunately silently generates the CAML query it knows how to build and the do the rest using LINQ to objects, in that case it'll be a lot slower than CAML generated even by a bad SharePoint developer.
If performance is important then my recommendation is to only use LINQ2SP in small console applications outputting generated CAML to the log and then copy/paste that CAML into the real code while checking that it looks good.
The worst case of LINQ2SP I've seen was a simple query against a list selecting top 10 records with certain criteria sorted by a column, this generated the same CAML is you'd write yourselves including OrderBy and RowLimit. When a condition to select on a choice field was added the CAML generated didn't include that extra condition and had the OrderBy and RowLimit removed as LINQ2SP now retrieved all the elements with the original criteria, and then in memory did a selection based on the choice field, sorted the elements and picked the first 10 elements. On a huge list this meant a query taking few milliseconds when to several minutes.