Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL: สร้างระบบค้นหาด้วย LIKE แบบคีย์เวิร์ด

การค้นหาข้อความด้วย LIKE

ใช้ LIKE '%keyword%' เพื่อค้นหาแถวที่คอลัมน์มีคำที่ต้องการอยู่ภายใน

ตัวอย่าง: ตาราง Comments

mysql> create table DemoTable812(Comments text);
Query OK, 0 rows affected (0.61 sec)
mysql> insert into DemoTable812 values('Good Looking');
mysql> insert into DemoTable812 values('Awesome');
mysql> insert into DemoTable812 values('Looking Gorgeous');
mysql> insert into DemoTable812 values('Good Luck');
mysql> insert into DemoTable812 values('Have a nice day');

ค้นหาข้อความที่มีคำว่า "Look"

mysql> select * from DemoTable812 where Comments LIKE '%Look%';

ผลลัพธ์:

+------------------+
| Comments         |
+------------------+
| Good Looking     |
| Looking Gorgeous |
+------------------+

การประยุกต์ใช้ในระบบค้นหาจริง

-- ค้นหาจากหลายคอลัมน์
SELECT * FROM products 
WHERE name LIKE '%keyword%' 
   OR description LIKE '%keyword%'
   OR tags LIKE '%keyword%';

-- ค้นหาแบบไม่สนใจพิมพ์เล็กใหญ่ (Default ของ MySQL)
SELECT * FROM articles WHERE title LIKE '%mysql%';

ข้อจำกัดและการเพิ่มประสิทธิภาพ

  • LIKE '%text%' (นำหน้าด้วย %) ไม่สามารถใช้ Index ได้ (Full table scan)
  • สำหรับข้อมูลเยอะ ควรใช้ Full-Text Search (MATCH() AGAINST()) หรือ Elasticsearch
  • LIKE 'text%' (นำหน้าคงที่) ใช้ Index ได้

สรุป

LIKE '%keyword%' ใช้ง่าย เหมาะข้อมูลน้อย-ปานกลาง สำหรับระบบค้นหาจริงขนาดใหญ่ ควรใช้ Full-Text Index หรือ Search Engine เฉพาะทาง