MySQL 普通索引

简介: 普通索引是MySQL中提升查询性能的重要手段,允许重复和NULL值,适用于频繁查询的非唯一字段。可通过CREATE TABLE或ALTER TABLE创建,支持单列、复合等类型,能加速SELECT、ORDER BY和GROUP BY操作,但会增加插入、更新成本及存储开销,需合理设计使用。

在 MySQL 中,普通索引(也称为非唯一索引)是一种用于加速数据检索的结构,旨在提高数据库查询的性能。与主键索引不同,普通索引允许重复值,并且不强制要求列的值为非 NULL。以下是有关 MySQL 普通索引的详细介绍。

  1. 普通索引的基本概念
    允许重复值:普通索引可以包含重复的值,适合用于查询中需要频繁查找但不需要唯一性的字段。
    非空性:普通索引允许 NULL 值,因此可以在包含 NULL 值的列上创建。
    加速查询:普通索引通过维护一个指向数据行的索引结构,可以显著提高 SELECT 查询的速度。
  2. 普通索引的作用
    提高查询性能:通过索引,MySQL 可以快速找到满足条件的记录,而不必扫描整个表。
    优化排序和分组操作:当使用 ORDER BY 或 GROUP BY 子句对某一列进行排序或分组时,索引可以加速这些操作。
    支持多条件查询:创建在多个列上的普通索引(复合索引)可以提高基于多个条件的查询性能。
  3. 如何创建普通索引
    在 MySQL 中,可以在创建表时或通过 ALTER TABLE 命令后期添加普通索引。以下是一些示例:

3.1 创建表时定义普通索引
sql
CREATE TABLE products (
product_id INT NOT NULL,
product_name VARCHAR(100),
category_id INT,
price DECIMAL(10, 2),
INDEX idx_category (category_id) -- 创建普通索引
);
在上述示例中,category_id 列上创建了一个名为 idx_category 的普通索引。

3.2 在现有表上添加普通索引
sql
ALTER TABLE products ADD INDEX idx_price (price); -- 添加普通索引

  1. 查询使用普通索引的效果
    普通索引在执行查询时可以显著提升性能。下面是一个使用普通索引的查询示例:

sql
SELECT * FROM products WHERE category_id = 5;
如果 category_id 列上存在普通索引,这个查询会比没有索引时快得多,因为 MySQL 可以直接利用索引定位到符合条件的数据。

  1. 普通索引的类型
    MySQL 支持多种类型的索引,包括:

单列索引:在一个列上创建索引。

复合索引:在多个列上创建索引。例如,可以在 category_id 和 price 上创建复合索引:

sql
CREATE INDEX idx_cat_price ON products (category_id, price);
全文索引(FULLTEXT):专门用于加速文本搜索的索引,适用于 CHAR、VARCHAR 和 TEXT 类型的列。

空间索引(SPATIAL):用于地理空间数据的索引,适用于 MyISAM 存储引擎。

  1. 普通索引的性能影响
    插入和更新性能:虽然普通索引能够加速查询,但在插入、更新或删除操作时,索引也必须被维护,这可能会导致性能下降。因此,在设计表时要平衡索引的数量与性能。
    存储开销:每个索引都会占用额外的存储空间,尤其是在大型表上,过多的索引可能导致存储成本增加。
  2. 查看和管理索引
    可以使用以下 SQL 语句查看表中的索引信息:

sql
SHOW INDEX FROM products;
这个命令将显示 products 表的所有索引,包括索引名称、类型、唯一性等信息。

  1. 删除普通索引
    如果需要删除不再使用的普通索引,可以使用 DROP INDEX 命令:

sql
ALTER TABLE products DROP INDEX idx_category;
总结
普通索引是 MySQL 中一种重要的索引类型,能够显著提高查询性能,尤其是在处理大量数据时。合理使用普通索引可以增强数据库的整体性能,但也要注意索引的创建和维护带来的存储开销和性能影响。在设计数据库时,应该根据具体的应用场景和查询需求来规划索引策略。

相关文章
|
13天前
|
数据采集 人工智能 安全
|
8天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
644 4
|
8天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
348 164
|
7天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
359 155

热门文章

最新文章