При объединении двух кадров данных с ~ 1 миллионом строк каждый, один с двумя столбцами, а другой с ~ 20, я неожиданно обнаружил, что merge(..., all.x = TRUE, all.y = TRUE)
будет быстрее, чем dplyr::full_join()
. Это с dplyr v0.4
Merge занимает ~ 17 секунд, full_join занимает ~ 65 секунд.
Некоторое питание, хотя, как правило, я использую dplyr для задач манипуляции.
Во-первых, с помощью innoDB вы можете без проблем запускать эти ключи без ключа
. InnoDB позволяет ограничению внешнего ключа ссылаться на не уникальный ключ. Это расширение InnoDB для стандартного SQL.
blockquote>Mabe у вас неверны ваши таблицы. Попробуйте это
Для резервирования
Schema::create('reservations', function($table) { $table->engine = 'InnoDB'; $table->string('id', 32)->index(); $table->string('name', 128); $table->string('user_id', 32)->references('id')->on('users'); $table->timestamps(); });
для пользователей
Schema::create('users', function($table) { $table->engine = 'InnoDB'; $table->string('id', 32)->index(); $table->string('name', 128); $table->timestamps(); });
, тогда вам нужно создать связь в оговорках
public function user(){ return $this->belongsTo('User', 'user_id'); }
, и теперь, когда вы выполняете поиск
$reservations = Reservation::with('user')->where('user_id', '=', '22beb4892ba944c8b1895855e1d4d1ad')->get();
, он должен работать! Я тестировал этот код.
user_id
из моего$this->belongsTo('User')
. большое спасибо! – jrsalunga 27 March 2014 в 18:40