Advantages Of FQL Over The Facebook API Methods
The data-gathering capabilities of FQL are identical to many of the API calls. However, before dismissing FQL as redundant, it is important to recognize that FQL does have some notable advantages over API access to Facebook, including the following:
-
FQL is more efficient. When you retrieve data using the API, you bring back all of the field data for a given record. However, with effective use of the
select
clause in an FQL statement, you can specify only those specific fields you want to have included in the result set. In fact, FQL does not even support selecting all records in a table withselect *
statements. -
FQL can reduce the number of server requests for complex requests. When you are retrieving data, you often find yourself making an initial request, working with the results, and then making a second request for more specific information. For instance, suppose I need to get the name and status of all members attending an event. Using the API, I would call
events.getMembers
to get all members attending a specific event. Next, I would take that array of members and useusers.getInfo
to get the name and status for each of them. In contrast, with FQL, these two requests can be done inside a single complex query (using thein
clause for a subquery). -
FQL is Web-language neutral. The Facebook API has several versions, each of which is written for a particular programming language, such as PHP, Java, or Ruby on Rails. Therefore, if you work in multiple programming environments, your Facebook code must be specific to each one. In contrast, because FQL is programming-language independent, you can use the same FQL statements anywhere.
The API calls are actually wrappers around lower-level FQL calls. In the end, even if you prefer to spend most of your time working with the API, you may find specific occasions in which you want to take advantage of the efficiency of FQL.
Making An FQL Statement
To make an FQL query, use the fql.query
API method. Its syntax in PHP looks like this:
$result_set = $facebook->api_client->fql_query("select name from user where uid=634164579");
The fql_query
method sends the FQL query string to Facebook for processing. The results are returned to the PHP client as an array. Note that you can also return results in XML and JSON format as well for other clients. The array result set you’d get back in PHP would be:
( [0] => Array ( [name] => Mert TOL ) )
You can then work with the result set just like you would with an array obtained from a Facebook API call. And note that because Facebook manages the database connections for you, you do not need to open and close databases as part of your application.
Differences Between SQL and FQL
Although FQL is based on SQL syntax, the two are not the same. SQL is designed to be a flexible query language in a variety of contexts. FQL, on the other hand, is a query language for a specific, very targeted data set.
Therefore, FQL has some limitations compared to SQL that you need to be aware of, particularly if you already know SQL. These include the following:
-
select *
is not allowed. You need to specify all the fields by name in which you want to include in the result set. -
The
from
clause can only include a single table. -
At least one field in the
where
clause must be classified as indexable. -
join
is not supported (thoughin
subqueries are). -
The
groupby
,order by
,count
, andlimit
keywords are not supported. -
The
between
andlike
operators are not supported. -
Because you have read-only access, you obviously cannot use keywords like
update
,delete
,insert into
, orcreate table
.
There have been no comments | Subscribe to Comments | Jump to Form »