நடைமுறை SQL Query மேம்படுத்தல்: மெதுவான Scans-லிருந்து திறமையான Indexes வரை

நடைமுறை SQL Query மேம்படுத்தல்: மெதுவான Scans-லிருந்து திறமையான Indexes வரை

பயன்பாடுகள் நூறாயிரக்கணக்கிலிருந்து மில்லியன் கணக்கான பதிவுகளாக வளரும்போது, மோசமாக மேம்படுத்தப்பட்ட database queries குறிப்பிடத்தக்க இடையூறுகளாக மாறக்கூடும். மெதுவான queries சர்வர் வளங்களை தீர்த்து, செயல்திறனைக் குறைக்கும். இந்தக் கட்டுரையில், MySQL மற்றும் SQL Server போன்ற relational database systems-ல் மெதுவான SQL queries-ஐக் கண்டறிந்து மேம்படுத்துவதற்கான நடைமுறை உத்திகளை ஆராய்வோம்.

1. பயன்படுத்துவதைத் தவிர்க்கவும் SELECT * Production-ல்

ஒரு பொதுவான தவறு பயன்படுத்துவது SELECT * அனைத்து columns-ஐயும் மீட்டெடுக்க. இது தேவையற்ற தரவு பரிமாற்றத்திற்கு வழிவகுக்கும் மற்றும் செயல்திறனை மெதுவாக்கும். எடுத்துக்காட்டாக:

SELECT * FROM orders WHERE customer_id = 4502;

இது ஏன் செயல்திறனைப் பாதிக்கிறது:

  • I/O மற்றும் நெட்வொர்க் ஓவர்ஹெட் (I/O and Network Overhead): பெரிய columns-ஐ மீட்டெடுப்பது தேவையற்ற பைட்டுகளைப் பரிமாற்றக்கூடும்.
  • Covering Indexes-ஐத் தடுக்கிறது: கோரப்பட்ட அனைத்து columns-உம் index-ல் இருந்தால் மட்டுமே, அடிப்படை அட்டவணையைப் படிக்காமல் ஒரு index-ஆல் query-ஐப் பூர்த்தி செய்ய முடியும்.

தீர்வு:

உங்களுக்குத் தேவையான columns-ஐ மட்டும் குறிப்பிடவும்:

SELECT order_id, total_amount, order_status, created_at
FROM orders
WHERE customer_id = 4502;

2. இதைக் கொண்டு இடையூறுகளைக் கண்டறிதல் EXPLAIN

Indexes-ஐச் சேர்ப்பதற்கு முன், database உங்களது query-ஐ எவ்வாறு இயக்குகிறது என்பதைப் பகுப்பாய்வு செய்வது முக்கியம். இதைப் பயன்படுத்தவும்: EXPLAIN கட்டளை (command):

EXPLAIN SELECT order_id, total_amount
FROM orders
WHERE customer_id = 4502 AND order_status = 'COMPLETED';

ஆய்வு செய்ய வேண்டிய முக்கிய அளவீடுகள்:

  • type: இதைத் தேடுங்கள் ALL (முழு அட்டவணை ஸ்கேன்). நீங்கள் பார்க்க விரும்புவது ref, eq_ref, அல்லது range.
  • rows: ஆய்வு செய்யப்பட்ட வரிசைகளின் மதிப்பிடப்பட்ட எண்ணிக்கையைக் குறிக்கிறது. அதிக எண்ணிக்கை என்பது index விடுபட்டுள்ளதைக் குறிக்கிறது.
  • key: எந்த index தேர்ந்தெடுக்கப்பட்டது என்பதைக் குறிக்கிறது. ஒருவேளை NULL, எந்த index-உம் பயன்படுத்தப்படவில்லை.
  • Extra: இதில் எச்சரிக்கையாக இருங்கள் Using filesort அல்லது Using temporary.

3. Multi-Column (Composite) Indexes-ஐ சரியாக வடிவமைத்தல்

பல நிபந்தனைகளை query செய்யும் போது, ஒரு composite index பயனுள்ளதாக இருக்கும். Leftmost Prefix Rule காரணமாக columns-இன் வரிசை முக்கியமானது. எடுத்துக்காட்டாக:

CREATE INDEX idx_orders_customer_status
ON orders (customer_id, order_status);

Leftmost Prefix Rule எவ்வாறு செயல்படுகிறது:

  • இதன் மீதான தேடல் customer_id மட்டும் இந்த index-ஐப் பயன்படுத்தும்.
  • இரண்டின் மீதான தேடலும் customer_id மற்றும் order_status இந்த index-ஐப் பயன்படுத்தும்.
  • இதன் மீதான தேடல் order_status மட்டும் இந்த index-ஐப் பயனுள்ள வகையில் பயன்படுத்த முடியாது.

4. Indexed Columns-ல் Functions-ஐத் தவிர்க்கவும் (SARGability)

Indexed columns-ல் functions-ஐப் பயன்படுத்துவது திறமையான index பயன்பாட்டைத் தடுக்கலாம். எடுத்துக்காட்டாக:

SELECT order_id FROM orders
WHERE DATE(created_at) = '2026-09-01';

SARGable மாற்று:

வெளிப்படையான வரம்புடன் ஒப்பிடுவதன் மூலம் query-ஐ SARGable-ஆக (Search Argument Able) மாற்றவும்:

SELECT order_id FROM orders
WHERE created_at >= '2026-09-01 00:00:00'
  AND created_at < '2026-09-02 00:00:00';

5. Case Study: 3-Column Composite Index மூலம் Chat Message Latency-ஐ 1,000%+ குறைத்தல்

ஒரு நிஜ உலக வழக்கில், மூன்று columns மீதான ஒரு composite index query செயல்திறனை வியத்தகு முறையில் மேம்படுத்தியது. அசல் அமைப்பிற்கு முழு அட்டவணை ஸ்கேன் தேவைப்பட்டது, இது அதிக latency-க்கு வழிவகுத்தது. ஒரு composite index-ஐச் செயல்படுத்திய பிறகு, query latency கணிசமாகக் குறைந்தது.

Index-க்கு முன்:

  • Full Table Scan: database ஒவ்வொரு வரிசையையும் ஆய்வு செய்தது.
  • High Latency: Queries சராசரியாக 1,200ms முதல் 2,500ms வரை எடுத்தன.

Index-க்கு பின்:

  • தரவுக்கான நேரடி அணுகல்: database தேவையான பதிவுகளுக்கு நேரடியாகச் செல்ல முடிந்தது.
  • Low Latency: Queries சுமார் 1.8ms ஆக குறைந்தது.

இந்த உத்திகளைச் செயல்படுத்துவதன் மூலம், டெவலப்பர்கள் SQL query செயல்திறனை மேம்படுத்த முடியும், இது சிறந்த பயனர் அனுபவத்தை வழங்கும் மிகவும் திறமையான பயன்பாடுகளுக்கு வழிவகுக்கும்.

முடிவுரை

பயன்பாடுகள் விரிவடையும் போது SQL queries-ஐ மேம்படுத்துவது முக்கியமானது. பொதுவான ஆபத்துகளைத் தவிர்ப்பதன் மூலமும், indexing உத்திகளைப் பயன்படுத்துவதன் மூலமும், database செயல்திறனை நீங்கள் கணிசமாக மேம்படுத்த முடியும்.

நன்மைகள்

  • மேம்படுத்தப்பட்ட query செயல்திறன்.
  • குறைக்கப்பட்ட சர்வர் வளப் பயன்பாடு.
  • மேம்படுத்தப்பட்ட பயனர் அனுபவம்.

தீமைகள்

  • கவனமான திட்டமிடல் மற்றும் பகுப்பாய்வு தேவை.
  • தவறாக உள்ளமைக்கப்பட்ட indexes மோசமான செயல்திறனுக்கு வழிவகுக்கும்.

எச்சரிக்கை

இந்தக் கட்டுரை கல்வி நோக்கங்களுக்கானது. எந்தவொரு placeholder மதிப்புகளையும் உங்கள் குறிப்பிட்ட தரவைக் கொண்டு மாற்றவும். தகவல்களை நம்புவதற்கு முன் எப்போதும் அசல் மூலத்துடன் சரிபார்க்கவும்.

அடிக்கடி கேட்கப்படும் கேள்விகள்

  • SQL query உகப்பாக்கம் என்றால் என்ன? — SQL query உகப்பாக்கம் என்பது, இயங்கும் நேரம் மற்றும் வள நுகர்வைக் குறைக்க database queries-இன் செயல்திறனை மேம்படுத்துவதை உள்ளடக்குகிறது.
  • நான் ஏன் தவிர்க்க வேண்டும் SELECT *? — பயன்படுத்துவது SELECT * அனைத்து columns-ஐயும் மீட்டெடுக்கிறது, இது தேவையற்ற தரவு பரிமாற்றத்திற்கும் மெதுவான செயல்திறனுக்கும் வழிவகுக்கும்.
  • மெதுவான queries-ஐ நான் எவ்வாறு கண்டறிவது? — இதைப் பயன்படுத்தவும் EXPLAIN உங்கள் queries-ஐ database எவ்வாறு இயக்குகிறது என்பதைப் பகுப்பாய்வு செய்யவும், இடையூறுகளைக் கண்டறியவும் இந்தக் கட்டளையைப் பயன்படுத்தவும்.
  • Composite index என்றால் என்ன? — Composite index என்பது பல columns மீதான ஒரு index ஆகும், இது அந்த columns-ஐ உள்ளடக்கிய தேடல்களுக்கான query செயல்திறனை மேம்படுத்தும்.
  • SARGable என்பதன் அர்த்தம் என்ன? — SARGable என்பது Search Argument Able என்பதைக் குறிக்கிறது, அதாவது ஒரு query-ஆல் திறமையாக ஒரு index-ஐப் பயன்படுத்த முடியும்.
  • Query latency-ஐ நான் எவ்வாறு மேம்படுத்தலாம்? — சரியான indexing உத்திகளைச் செயல்படுத்துவது மற்றும் திறமையற்ற queries-ஐத் தவிர்ப்பது query latency-ஐக் கணிசமாகக் குறைக்கலாம்.

குறிச்சொற்கள்

#sql #database #optimization #performance #indexing #query #development #tech

Free field guide

Prompt-Injection Defense Checklist

The controls that actually reduce the blast radius when your app feeds untrusted text to an LLM. Enter your email — you'll get the PDF instantly, plus new posts on AI, security & Linux.