MATCH(content) AGAINST('keyword'))。(col1,col2)需满足col1条件)。创建索引
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE, -- 唯一索引 email VARCHAR(100), INDEX idx_email (email), -- 普通索引 FULLTEXT INDEX idx_content (content) -- 全文索引(需指定字段类型为TEXT等) ); -- 普通索引 CREATE INDEX idx_username ON users(username); -- 复合索引 CREATE INDEX idx_name_email ON users(first_name, last_name, email); 或使用ALTER TABLE:ALTER TABLE users ADD INDEX idx_username (username); 查看索引
SHOW INDEX FROM table_name; 删除索引
DROP INDEX idx_username ON users; 避免索引失效
WHERE YEAR(date_col) = 2023,应改为WHERE date_col BETWEEN '2023-01-01' AND '2023-12-31')。LIKE查询(如LIKE '%value%'),可使用全文索引替代。利用覆盖索引
确保查询的列全部包含在索引中,避免回表查询(如SELECT id,name FROM users WHERE age > 18,索引包含(age,id,name))。
定期维护索引
ANALYZE TABLE table_name;。OPTIMIZE TABLE table_name;。EXPLAIN分析执行计划:EXPLAIN SELECT * FROM users WHERE email = 'example@example.com'; 重点关注type(访问类型,ref/range优于ALL)、key(是否使用索引)。LIMIT避免返回冗余数据。参考来源: