当前位置: 首页 > wzjs >正文

网站宣传册工商登记查询系统官网

网站宣传册,工商登记查询系统官网,单页面应用优化,wordpress评价文章目录 一、引言二、MySQL索引机制概述2.1 MySQL索引的创建方式2.2 查询、删除、指定索引2.3 数据库索引的本质 三、MySQL的索引分类3.1 数据结构层次3.2 字段数量层次3.3 功能逻辑层次3.4 存储方式层次3.5 索引分类小结 四、MySQL其他索引的创建使用方式4.1 唯一索引的创建与…

文章目录

    • 一、引言
    • 二、MySQL索引机制概述
      • 2.1 MySQL索引的创建方式
      • 2.2 查询、删除、指定索引
      • 2.3 数据库索引的本质
    • 三、MySQL的索引分类
      • 3.1 数据结构层次
      • 3.2 字段数量层次
      • 3.3 功能逻辑层次
      • 3.4 存储方式层次
      • 3.5 索引分类小结
    • 四、MySQL其他索引的创建使用方式
      • 4.1 唯一索引的创建与使用
      • 4.2 主键索引的创建与使用
      • 4.3 全文索引的创建与使用
      • 4.4 空间索引的创建与使用
      • 4.5 联合索引的创建与使用
    • 五、总结

Python是一种强大且易于学习的编程语言。通过这个21天的计划,我们将逐步深入MySQL索引机制从基础到应用。无论你是初学者还是有一定基础的开发者,这个计划都将帮助你巩固和扩展你的Python知识。

在学习本篇之前,我们先复习一下前面的内容:
day1:Python下载和开发工具介绍
day2:数据类型、字符编码、文件处理
day3:基础语法与课外练习
day4:函数简单介绍
day5:模块与包
day6:常用模块介绍
day7:面向对象
day8:面向对象高级
day9:异常处理
day10:网络编程
day11:并发编程
day12:MySQL数据库初识
day13:MySQL库相关操作
day14:MySQL表相关操作
day15:MySQL中DML与权限管理
day16:MySQL数据备份与Python操作实战指南
day17:MySQL视图、触发器、存储过程、函数与流程控制
day18:使用SQLAlchemy 中的ORM查询

一、引言

在业务系统中,MySQL作为存储层部署在最后端,所有业务数据最终都要入库落盘。随着项目在线上运行时间增长,数据库的数据量会不断增多,表查询效率也会越发低下。因为MySQL默认的查询方式是全表扫描,会触发大量磁盘IO。

例如,在一个有七位学生信息的zz_student表中,查询姓名为「脑斧」的学生信息,至少要经过六次磁盘IO才能检索到目标。若表中有1000W条数据,要查的目标数据位于表的900W行以后,那效率可想而知。

而查询是业务系统中最频繁的操作,一般项目的写/读请求比例遵循三七定律,所以提升数据库的查询性能至关重要。这就如同小时候查新华字典,通过目录索引能快速找到目标汉字,MySQL也提供了索引机制来提升查询效率。

在这里插入图片描述
既然字典中都存在目录索引页,能帮助小时候的我们快速检索汉字,那这个思想能否应用到数据库中来呢?答案是当然可以,并且MySQL也提供了索引机制,索引是数据库中的核心组件之一,一张表中建立了合适的索引后,往往在面对海量数据查询时,能够事半功倍,接下来一起探讨一下MySQL的索引。

二、MySQL索引机制概述

2.1 MySQL索引的创建方式

  • 使用CREATE语句创建
CREATE INDEX indexName ON tableName (columnName(length) [ASC|DESC]);

此方式可给已存在的表结构添加索引,需指定索引名、表名、字段名等。INDEX也可更改为KEY,用于创建普通索引。

  • 使用ALTER语句创建
ALTER TABLE tableName ADD INDEX indexName(columnName(length) [ASC|DESC]);

参数与CREATE语句类似。

  • 建表时DDL语句中创建
CREATE TABLE tableName(columnName1 INT(8) NOT NULL,columnName2 ....,.....,INDEX [indexName] (columnName(length))
);

适合在库表设计时确定索引项的情况。

2.2 查询、删除、指定索引

  • 查询索引:使用SHOW INDEX FROM tableName;命令可查询表中拥有的索引。查询结果各字段含义如下:
    • Table:当前索引所属表。
    • Non_unique:是否为唯一索引,0是,1不是。
    • Key_name:索引名字。
    • Seq_in_index:联合索引中字段的排序。
    • Column_name:索引所在字段。
    • Collation:字段值在索引中的存储方式,A表示有序,NULL表示无序。
    • Cardinality:索引的散列程度。
    • Sub_part:索引使用字段值的字符数,NULL表示全部。
    • Packed:索引存储字段值的压缩方式,NULL表示未压缩。
    • Null:索引字段值中是否存在NULL值。
    • Index_type:索引的结构。
    • Comment:索引的备注信息。
  • 删除索引:使用DROP INDEX indexName ON tableName;语句删除索引。
  • 指定索引:使用SELECT * FROM table_name FORCE INDEX(index_name) WHERE …;为查询语句强制指定索引,但需注意查询SQL要能走指定的索引字段。

2.3 数据库索引的本质

数据库基于磁盘工作,索引也是数据的一种,最终会在磁盘生成本地文件。索引文件的存储方式由索引的数据结构决定,不同存储引擎下的索引文件格式也不同。建立索引时,表数据越少越好,因为创建索引需要基于原表数据在磁盘创建新的本地索引文件,数据量越大,创建耗时越长。

三、MySQL的索引分类

3.1 数据结构层次

MySQL索引支持的数据结构有:

  • B+Tree类型:最常用,大部分引擎支持,有序。
  • Hash类型:大部分存储引擎支持,字段值不重复时查询最快,无序。
  • R-Tree类型:MyISAM引擎支持,是空间索引的默认结构类型。
  • T-Tree类型:NDB - Cluster引擎支持,用于MySQL - Cluster服务。

创建索引时,默认数据结构为B+Tree,可通过USING关键字指定其他支持的结构。索引分为有序和无序,由数据结构决定。

3.2 字段数量层次

  • 单列索引:基于一个字段建立的索引,包括唯一索引、主键索引、普通索引等。
  • 多列索引:由多个字段组合建立的索引,也叫组合索引、联合索引等。使用多列索引时,查询条件需包含第一个字段才能使用。

此外,还有前缀索引,即使用字段值的前N个字符创建的索引,可节省存储空间并提升性能。

3.3 功能逻辑层次

从功能逻辑划分,索引主要分为普通索引、唯一索引、主键索引、全文索引、空间索引。

  • 全文索引:类似于ES、Solr搜索中间件中的分词器,只能创建在文本类型字段上,查询条件字符数量必须大于3才生效。创建时需使用FULLTEXT关键字,5.6版本的MySQL中,存储引擎必须为MyISAM才能创建,若要支持中文,需指定解析器with parser ngram。

  • 空间索引:基于GIS空间数据,用于管理地理信息的数据结构,在地理相关项目中应用较多。MySQL支持GEOMETRY、POINT、LINESTRING、POLYGON四种空间数据类型,空间索引基于这些类型的字段建立。

3.4 存储方式层次

  • 聚簇索引:逻辑和物理空间上都连续,索引数据和表数据在磁盘中的位置在一起。一张表只能有一个聚簇索引,一般选用主键作为聚簇索引。
  • 非聚簇索引:逻辑上连续,物理空间上不连续,索引节点和表数据通过物理地址维护联系。

3.5 索引分类小结

MySQL的索引从不同角度有多种分类方式,以功能逻辑层次划分是最常用的方式。通过对不同层次索引的了解,能更系统地认识MySQL的索引机制。

四、MySQL其他索引的创建使用方式

4.1 唯一索引的创建与使用

使用UNIQUE关键字创建唯一索引,若表中字段值存在相同值,则无法创建。创建成功后,对表具备唯一约束作用,插入相同值会报错。

-- 方式①
CREATE UNIQUE INDEX indexName ON tableName (columnName(length));
-- 方式②
ALTER TABLE tableName ADD UNIQUE INDEX indexName(columnName);
-- 方式③
CREATE TABLE tableName(columnName1 INT(8) NOT NULL,columnName2 ....,.....,UNIQUE INDEX [indexName] (columnName(length))
);

4.2 主键索引的创建与使用

使用PRIMARY关键字创建主键索引,创建时必须将索引字段先设为主键,不能使用CREATE语句创建,关键字要换成KEY。一般主键索引在建表的DDL语句中创建。

-- 方式①
ALTER TABLE tableName ADD PRIMARY KEY indexName(columnName);
-- 方式②
CREATE TABLE tableName(columnName1 INT(8) NOT NULL,columnName2 ....,.....,PRIMARY KEY [indexName] (columnName(length))
);

4.3 全文索引的创建与使用

创建全文索引需使用FULLTEXT关键字,有版本和字段类型等限制。使用时需了解最小搜索长度和最大搜索长度的概念,有自然语言模式、布尔搜索模式、查询拓展搜索三种搜索模式。

-- 方式①
ALTER TABLE tableName ADD FULLTEXT INDEX indexName(columnName);
-- 方式②
CREATE FULLTEXT INDEX indexName ON tableName(columnName);

4.4 空间索引的创建与使用

使用SPATIAL关键字创建空间索引,目前仅MyISAM引擎支持,且必须建立在特定的空间数据类型字段上。

ALTER TABLE tableName ADD SPATIAL KEY indexName(columnName);

4.5 联合索引的创建与使用

使用多个字段建立联合索引,可使用INDEX、UNIQUE INDEX、FULLTEXT INDEX等关键字。查询条件需包含第一个字段才能触发联合索引。

CREATE INDEX indexName ON tableName (column1(length),column2...);
ALTER TABLE tableName ADD INDEX indexName(column1(length),column2...);

五、总结

通过这个21天的Python计划,我们涵盖了MySQL索引机制从基础到应用。希望这些内容能帮助你更好地理解和使用Python。继续学习和实践,你将成为一名优秀的Python开发者!

http://www.dtcms.com/wzjs/543759.html

相关文章:

  • 自己怎么做卡密网站网站规划要点
  • 免费做产品宣传的网站建设心理网站的背景
  • 常见的营销型网站先做网站还是先收集样品
  • 企业网站建设课程体会网站建设开发公司推荐指数
  • 论坛的网站开发项目建筑设计为何没人干了
  • 怎样建网站邢台长沙有哪些推广平台
  • html5网站首页代码做游戏推广网站
  • 建设网站 程序员的提成北京pk10盘制作网站建设
  • 做网站4000-262-263网页代码
  • 官方网站的网络营销功能分析网站建设达到什么水平
  • 北京模板网站建设费用微指数官网
  • 网站栏目设置完整度建设宝安中心医院上班时间
  • 哈尔滨网页模板建站合肥正规制作网站公司
  • 广州建站模板平台剪辑培训
  • 网站名称可以是域名seo编辑招聘
  • 和创客贴类似的网站wordpress改变上传目录权限
  • 安徽省建设厅证书查询官方网站做淘宝客网站哪个好
  • 建站公司是外包吗网站后台编辑器控件下载
  • 温州网站关键词排名优化做网站是用什么技术的
  • 网站设计技术有哪些?网站域名解析
  • 上线了怎么建网站中国建筑工程网官网二建报名查询
  • 网站制作目的.net 网站关键字
  • 企业管理网站建设定制高端网站建设服务商
  • 做网站设计哪家好深圳燃气公司有哪些
  • 阿雷网站建设公司开发软件需要学什么专业
  • 国外网站不需要备案吗包装设计招聘
  • itc 做市场分析的网站网站301跳跳转
  • 政务公开网站建设要求网站导航上的图片做多大尺寸
  • 网站建设过程怎么利用网站上的图片
  • 首次建设网站流程图北京做公司网站的公司