1. ใช้ EXIST() แทน COUNT() ในการหา ข้อมูลใน Table
SELECT
EXISTS(
SELECT
*
FROM
user
WHERE
id = 18
);
ข้อมูลที่จะ ได้รับจะเป็น 0 คือไม่มี และ 1 คือมีข้อมูล
2. ใช้ Varchar แทน Char
ตัวอย่าง CHAR(100)
จะใช้ 100 bytes ของหน่วยความจำเพื่อเก็บ single character
ตัวอย่าง VARCHAR(100)
จะใช้แค่ 1 byte ของหน่วยความจำเพื่อเก็บ single character.
CREATE TABLE user(
id INT PRIMARY KEY,
userNameCharCol CHAR(10),
userNameVarcharCol VARCHAR(10)
);
3. หลีกเลี่ยงการใช้ Subqueries ใน WHERE Clause
# Using a subquery
SELECT
*
FROM
orders
WHERE
customer_id IN (
SELECT
id
FROM
customers
WHERE
country = 'INDIA'
);
# Using a join operation
SELECT
orders.*
FROM
orders
JOIN customers ON orders.customer_id = customers.id
WHERE
customers.country = 'INDIA';
4. เรียงลำดับการ JOINs จาก Table ที่มีข้อมูลเยอะกว่าเสมอ
# Order table is larger than the Customer table
# Join from a larger table to a smaller table
SELECT
*
FROM
Order
JOIN Customer ON Customer.id = Order.id
# Join from a smaller table to a larger table
SELECT
*
FROM
Customer
JOIN Order ON Customer.id = Order.id
5. ใช้`regexp_like` แทน `LIKE`
# Query using the LIKE clause
SELECT
*
FROM
mytable
WHERE
(
name LIKE 'A%'
OR name LIKE 'B%'
);
# Query using regexp_like clause
SELECT
*
FROM
mytable
WHERE
regexp_like(name, '^[AB].*');
Ref. https://www.kdnuggets.com/2023/03/sql-query-optimization-techniques.html