ਵਿੱਚ ਡਾਟਾਬੇਸ ਸਵਾਲਾਂ ਨੂੰ ਅਨੁਕੂਲਿਤ ਕਰਨਾ Laravel: Eloquent ਅਤੇ ਸੂਚਕਾਂਕ ਦੇ ਨਾਲ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਵਧਾਉਣਾ

ਵਿੱਚ ਡਾਟਾਬੇਸ ਸਵਾਲਾਂ ਨੂੰ ਅਨੁਕੂਲਿਤ ਕਰਨਾ Laravel ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਸਰਵੋਤਮ ਕਾਰਗੁਜ਼ਾਰੀ ਅਤੇ ਜਵਾਬਦੇਹੀ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। Laravel ਦਾ Eloquent ORM(ਆਬਜੈਕਟ-ਰਿਲੇਸ਼ਨਲ ਮੈਪਿੰਗ) ਤੁਹਾਡੇ ਡੇਟਾਬੇਸ ਨਾਲ ਗੱਲਬਾਤ ਕਰਨ ਦਾ ਇੱਕ ਸੁਵਿਧਾਜਨਕ ਅਤੇ ਭਾਵਪੂਰਣ ਤਰੀਕਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਜੇਕਰ ਵਧੀਆ ਢੰਗ ਨਾਲ ਨਹੀਂ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਸਦਾ ਨਤੀਜਾ ਹੌਲੀ ਪੁੱਛਗਿੱਛ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਹੋ ਸਕਦਾ ਹੈ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਕੁਸ਼ਲਤਾ ਨੂੰ ਪ੍ਰਭਾਵਤ ਕਰ ਸਕਦਾ ਹੈ।

ਆਉ ਇਸ ਵਿੱਚ ਡੇਟਾਬੇਸ ਸਵਾਲਾਂ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣ ਲਈ ਕੁਝ ਤਕਨੀਕਾਂ ਅਤੇ ਉਦਾਹਰਣਾਂ ਦੀ ਪੜਚੋਲ ਕਰੀਏ Laravel:

 

ਉਤਸੁਕ ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ

ਉਤਸੁਕ ਲੋਡਿੰਗ ਤੁਹਾਨੂੰ ਮੁੱਖ ਪੁੱਛਗਿੱਛ ਦੇ ਨਾਲ ਸੰਬੰਧਿਤ ਡੇਟਾ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ, ਡੇਟਾਬੇਸ ਪੁੱਛਗਿੱਛਾਂ ਦੀ ਗਿਣਤੀ ਨੂੰ ਘਟਾਉਂਦੀ ਹੈ ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਵਧਾਉਂਦੀ ਹੈ।

ਹੇਠ ਦਿੱਤੀ ਉਦਾਹਰਨ 'ਤੇ ਗੌਰ ਕਰੋ:

// Without eager loading(N + 1 problem)  
$users = User::all();  
foreach($users as $user) {  
    $posts = $user->posts; // Additional queries for each user  
}  
  
// With eager loading  
$users = User::with('posts')->get();  

 

ਚੋਣਵੇਂ ਖੇਤਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ

ਇੱਕ ਸਾਰਣੀ ਤੋਂ ਸਾਰੇ ਖੇਤਰਾਂ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਬਜਾਏ, ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਿਰਫ਼ ਲੋੜੀਂਦੇ ਖੇਤਰਾਂ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰੋ select । ਇਹ ਡੇਟਾਬੇਸ ਤੋਂ ਟ੍ਰਾਂਸਫਰ ਕੀਤੇ ਗਏ ਡੇਟਾ ਦੀ ਮਾਤਰਾ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ ਅਤੇ ਪੁੱਛਗਿੱਛ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਸਮੇਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਂਦਾ ਹੈ।

$users = User::select('id', 'name')->get();

 

ਇੰਡੈਕਸਿੰਗ

ਸਵਾਲਾਂ ਵਿੱਚ ਵਰਤੇ ਗਏ ਕਾਲਮਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਇੰਡੈਕਸ ਕਰਨ ਨਾਲ ਡਾਟਾਬੇਸ ਲੁੱਕਅਪ ਨੂੰ ਤੇਜ਼ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਉਦਾਹਰਣ ਲਈ:

Schema::table('users', function($table) {  
    $table->index('email'); // Indexing the 'email' column for faster lookups  
});  

 

ਪੰਨਾ ਨੰਬਰ

ਵੱਡੇ ਡੇਟਾਸੇਟਾਂ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ, ਇੱਕ ਸਿੰਗਲ ਪੁੱਛਗਿੱਛ ਵਿੱਚ ਪ੍ਰਾਪਤ ਕੀਤੇ ਗਏ ਰਿਕਾਰਡਾਂ ਦੀ ਗਿਣਤੀ ਨੂੰ ਸੀਮਿਤ ਕਰਨ ਲਈ ਪੰਨਾ ਨੰਬਰ ਦੀ ਵਰਤੋਂ ਕਰੋ।

$posts = Post::paginate(10); // Fetch 10 posts per page

 

ਪੁੱਛਗਿੱਛ ਅਨੁਕੂਲਨ

ਕੁਸ਼ਲ ਪੁੱਛਗਿੱਛਾਂ ਬਣਾਉਣ ਲਈ ਪ੍ਰਭਾਵੀ ਤਰੀਕੇ ਨਾਲ ਪੁੱਛਗਿੱਛ ਬਿਲਡਰ ਵਿਧੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਉਦਾਹਰਨ ਲਈ, ਜੇਕਰ ਤੁਹਾਨੂੰ ਸਿਰਫ਼ ਪਹਿਲੇ ਨਤੀਜੇ ਦੀ ਲੋੜ ਹੈ, ਤਾਂ first() ਇਸਦੀ ਬਜਾਏ ਵਰਤੋਂ get()

$firstUser = User::where('age', '>', 18)->first();

 

N+1 ਸਮੱਸਿਆ ਤੋਂ ਬਚੋ

N+1 ਸਮੱਸਿਆ ਉਦੋਂ ਵਾਪਰਦੀ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਮਾਡਲਾਂ ਦੇ ਸੰਗ੍ਰਹਿ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹੋ ਅਤੇ ਫਿਰ ਲੂਪ ਦੇ ਅੰਦਰ ਇੱਕ ਸੰਬੰਧਿਤ ਮਾਡਲ ਤੱਕ ਪਹੁੰਚ ਕਰਦੇ ਹੋ। ਇਸ ਤੋਂ ਬਚਣ ਲਈ, ਉਤਸੁਕਤਾ ਨਾਲ ਸੰਬੰਧਿਤ ਮਾਡਲਾਂ ਨੂੰ ਲੋਡ ਕਰੋ with.

 

Raw Queries

ਗੁੰਝਲਦਾਰ ਸਵਾਲਾਂ ਲਈ, ਸਰਵੋਤਮ ਪ੍ਰਦਰਸ਼ਨ ਲਈ ਪੈਰਾਮੀਟਰ ਬਾਈਡਿੰਗ ਦੇ ਨਾਲ ਕੱਚੇ SQL ਸਵਾਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ 'ਤੇ ਵਿਚਾਰ ਕਰੋ।

$users = DB::select('SELECT * FROM users WHERE age >:age', ['age' => 18]);

 

ਇਹਨਾਂ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਤੇ ਅੰਡਰਲਾਈੰਗ ਡੇਟਾਬੇਸ ਪਰਸਪਰ ਕ੍ਰਿਆਵਾਂ ਨੂੰ ਸਮਝ ਕੇ, ਤੁਸੀਂ ਡਾਟਾਬੇਸ ਸਵਾਲਾਂ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾ ਸਕਦੇ ਹੋ Laravel, ਨਤੀਜੇ ਵਜੋਂ ਤੇਜ਼ ਜਵਾਬ ਸਮਾਂ ਅਤੇ ਸਮੁੱਚੇ ਤੌਰ 'ਤੇ ਵਧੇਰੇ ਕੁਸ਼ਲ ਐਪਲੀਕੇਸ਼ਨ ਹੋ ਸਕਦੀ ਹੈ।