byhk44 Çok mantıklı bir soru. Foreign index değildir. MySQL foreign key oluşturduğunuzda ona bir de index oluşturur; PostgreSQL ve SQL Server oluşturmaz, ayrıca oluşturmanız gerekir.
MySQL
$table->foreignId('urun_id')->constrained('urun');
$table->foreignId('urun_id')->nullable()->constrained('urun');
PostgreSQL/SQL Server
$table->foreignId('urun_id')->index()->constrained('urun');
$table->foreignId('urun_id')->nullable()->index()->constrained('urun');
Foreign key oluşturduğumuzda index de oluşturmamız gerekir mi? (MySQL kullanmıyorsak)
Evet. Örneğin on delete cascade eklendiğinde parent silinirken alt kayıtlara bu index aracılığı ile ulaşılarak çok daha hızlı silme işlemi gerçekleşir. Öteki türlü table scan yapar.
Nullable bir foreign key için de index oluşturulabilir mi?
Evet. Örneğini üstte verdim. Yöntem sırası önemli. ->nullable()->index()
ile ->index()->nullable()
farklı şeyler.