在日常开发中,数据库查询速度直接影响用户体验。比如你在做电商项目时,商品搜索卡顿几秒,用户可能就直接关掉页面了。这时候,检查索引是否存在、是否生效就成了关键一步。掌握几个常见的数据库索引查看命令,能帮你快速定位问题。
MySQL 中查看索引
MySQL 是最常用的数据库之一,查看表的索引信息可以用 SHOW INDEX 命令。
SHOW INDEX FROM users;
这条命令会列出 users 表的所有索引,包括主键、唯一索引、普通索引等。输出结果中的 Key_name 是索引名,Column_name 显示该索引涉及的字段,Non_unique 表示是否允许重复值。
如果你只想看建表语句,也可以用:
SHOW CREATE TABLE users;
里面会包含所有索引定义,适合快速复制或迁移结构。
PostgreSQL 查看索引方式
在 PostgreSQL 里,系统表提供了更灵活的查询方式。常用的是从 pg_indexes 视图中查。
SELECT * FROM pg_indexes WHERE tablename = 'users';
这条语句会返回指定表的所有索引名称和定义语句,清晰明了。如果想进一步分析执行计划是否走了索引,可以配合 EXPLAIN 使用。
SQLite 的索引查看方法
SQLite 虽然轻量,但也不少人用在小程序或本地工具中。查看索引可以用:
.indexes users
这是 SQLite 命令行下的专用命令,直接列出该表的所有索引名。如果想看完整建表语句,包括索引定义:
SELECT sql FROM sqlite_master WHERE tbl_name = 'users' AND type = 'index';
这样就能看到每个索引的具体创建语句。
MongoDB 怎么看索引?
MongoDB 是文档型数据库,查看集合的索引也很简单:
db.users.getIndexes()
执行后会返回当前集合上所有索引,包括默认的 _id 索引和你自己创建的复合索引。如果发现某个查询特别慢,先跑一遍这个命令,确认有没有对应字段的索引。
有时候你会发现明明加了索引,但查询还是慢。这时候可以用 hint() 强制使用某个索引测试效果:
db.users.find({name: '张三'}).hint('name_1')
实际工作中,别等到线上出问题才去查索引。定期审查高频查询表的索引情况,就像定期清理手机缓存一样,是保持系统流畅的基本操作。