தரவுத்தள வினவல்களை மேம்படுத்துதல் 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, இதன் விளைவாக விரைவான பதில் நேரங்கள் மற்றும் ஒட்டுமொத்தமாக மிகவும் திறமையான பயன்பாடு கிடைக்கும்.