diff --git a/includes/handlers.inc b/includes/handlers.inc
index 30993ae..bd54ffa 100644
--- a/includes/handlers.inc
+++ b/includes/handlers.inc
@@ -1391,7 +1391,7 @@ function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set
  * @defgroup views_join_handlers Views join handlers
  * @{
  * Handlers to tell Views how to join tables together.
-
+ *
  * Here is how you do complex joins:
  *
  * @code
@@ -1410,6 +1410,7 @@ function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set
  * }
  * @endcode
  */
+
 /**
  * A function class to represent a join and create the SQL necessary
  * to implement the join.
@@ -1427,9 +1428,9 @@ function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set
  *   - type: either LEFT (default) or INNER
  *   - extra: An array of extra conditions on the join. Each condition is
  *     either a string that's directly added, or an array of items:
- *   - - table: if not set, current table; if NULL, no table. This field can't
- *       be set in the cached definition because it can't know aliases; this field
- *       can only be used by realtime joins.
+ *   - - table: If not set, current table; if NULL, no table. If you specify a
+ *       table in cached definition, Views will try to load from an existing
+ *       alias. If you use realtime joins, it works better.
  *   - - field: Field or formula
  *       in formulas we can reference the right table by using %alias
  *       @see SelectQueryInterface::addJoin()
@@ -1481,14 +1482,14 @@ class views_join {
   /**
    * Build the SQL for the join this object represents.
    *
+   * When possible, try to use table alias instead of table names.
+   *
    * @param $select_query
    *   An implementation of SelectQueryInterface.
    * @param $table
    *   The base table to join.
    * @param $view_query
    *   The source query, implementation of views_plugin_query.
-   * @return
-   *
    */
   function build_join($select_query, $table, $view_query) {
     if (empty($this->definition['table formula'])) {
@@ -1523,7 +1524,14 @@ class views_join {
             $join_table = $table['alias'] . '.';
           }
           elseif (isset($info['table'])) {
-            $join_table = $info['table'] . '.';
+            // If we're aware of a table alias for this table, use the table
+            // alias instead of the table name.
+            if ($view_query->table_queue[$this->left_table]['table'] == $info['table']) {
+              $join_table = $view_query->table_queue[$this->left_table]['alias'] . '.';
+            }
+            else {
+              $join_table = $info['table'] . '.';
+            }
           }
 
           // Convert a single-valued array of values to the single-value case,
diff --git a/modules/system.views.inc b/modules/system.views.inc
index 16b1db5..3d3930b 100644
--- a/modules/system.views.inc
+++ b/modules/system.views.inc
@@ -248,7 +248,7 @@ function system_views_data() {
       'base' => 'node',
       'base field' => 'nid',
       'relationship field' => 'id',
-      'extra' => array(array('field' => 'type', 'value' => 'node')),
+      'extra' => array(array('table' => 'file_usage', 'field' => 'type', 'operator' => '=', 'value' => 'node')),
     ),
   );
   $data['file_usage']['node_to_file'] = array(
