It is incorrect to assume that SOSL is better for large data sets. Both SOQL and SOSL can be used with large data sets when implemented correctly.
I wrote an article (originally posted as a Q&A here) about the differences between SOQL and SOSL you may find useful. SOSL actually limits you to 200 records returned in a single SOSL query while SOQL will allow up to 50,000. On top of that, SOSL only allows 20 queries per request while SOQL allows 100.
When working with large data, your best bet would be to understand proper data structure and proper techniques (skinny tables, indexes, etc). Salesforce recommends the following when it comes to large data sets:
Use SOQL when
- You know in which objects or fields the data resides.
- You want to retrieve data from a single object or from multiple objects that are related to one another.
- You want to count the number of records that meet specified criteria.
- You want to sort results as part of the query.
- You want to retrieve data from number, date, or checkbox fields.
Use SOSL when
- You don't know in which object or field the data resides and you want to find it in the most efficient way possible.
- You want to retrieve multiple objects and fields efficiently, and the objects may or may not be related to one another.
- You want to retrieve data for a particular division in an organization using the divisions feature, and you want to find it in
the most efficient way possible.