本文共 1645 字,大约阅读时间需要 5 分钟。
索引是数据库中的重要结构,用于加速查询操作,但其创建与管理也需要注意事项。本文将详细介绍索引的原理、类型及其使用方法。
索引通过预先组织数据,实现快速查找功能。常见的存储结构包括 B树和哈希表。与哈希表不同,B树能够支持范围查询,因此在数据库引擎中更为广泛应用,如 InnoDB 引擎就使用 B 树结构。
普通索引
唯一索引
组合索引
主键索引
普通索引
代码示例:CREATE TABLE tb10 ( nid INT, age INT, INDEX id_index (nid));
可在建表时或表创建后单独执行:
CREATE INDEX id_index ON tb10 (nid);
唯一索引
CREATE TABLE tb11 ( nid INT, age INT, UNIQUE uniq_index (nid));
或动态创建:
CREATE UNIQUE INDEX id_index ON tb11 (nid);
组合索引
CREATE TABLE tb10 ( nid INT, age INT, INDEX id_index (nid, age));
动态创建示例:
CREATE INDEX id_index ON tb10 (nid, age);
DROP INDEX id_index ON tb10;
DROP UNIQUE INDEX id_index ON tb10;
使用 SHOW INDEX
命令查看索引详情:
SHOW INDEX FROM tb10;
避免使用 SELECT *
SELECT age, nid FROM tb10 WHERE ...;
优化查询条件
使用COUNT(列名)
代替 COUNT(*)
:COUNT(`age`); -- 更高效
索引关键点
CHAR
而非 VARCHAR
。TEXT
列,建议创建短索引(如 16 个字符)。特殊查询优化
>
, OR
, LIKE
等。使用 EXPLAIN
分析查询性能:
type
字段表示访问方式,如 index
表示使用了索引。all
、index
、range
、index_merge
等。SET global slow_query_log = 1; -- 查看当前配置
简单分页
SELECT * FROM tb10 LIMIT 10, 10;
优点:直接可用,缺点:扫描全表。
主键分页
SELECT * FROM tb10 WHERE id > max_id LIMIT 10;
SELECT * FROM tb10 WHERE id < min_id ORDER BY id DESC LIMIT 10;
多行分页
SELECT * FROM tb10 WHERE id IN (SELECT id FROM tb10 WHERE id > max_id ORDER BY id DESC LIMIT 30) LIMIT 10;
通过以上方法,合理使用索引和分页策略,可以显著提升数据库查询性能。
转载地址:http://cbbfk.baihongyu.com/