首页 > 其他分享 >索引

索引

时间:2022-12-05 23:12:36浏览次数:32  
标签:index 列名 索引 查找 表名 事物

索引的功能:

约束---主键、外键、唯一、普通、联合

加速查找

 

原理:索引数据库专门用于查找数据的一种数据结构,类似字典中的目录,查找字典内容时可以根据目录查找数据的存放位置。然后直接获取。

索引的代价:创建一个索引,会多生成一个文件。创建索引后,在插入、更新、删除等操作时,不仅会对原始表进行操作、而且还要对索引表进行操作。如果数据量很大,创建索引也要大量的时间。

 

 

普通索引----加速查找

create TABLE tb1(
id int PRIMARY KEY auto_increment,
name VARCHAR(20)
index ix_name (name)
)
或者
create index 索引名 on 表名 (列名)

删除索引  drop 索引名 on 表名

查看索引  show index from 表名

 

唯一索引----加速查找,约束列数据不能重复,只能有一个null

create  unique index 索引名 on 表名 (列名)

 

主键索引-----一般列设置为主键后,MYSQL就会自动生成一个主键索引

 

组合索引------联合唯一,加速查找,约束列不能重复,多列创建一个索引文件

普通组合索引  create index 索引名 on 表名 (列名1,列名2)

联合唯一索引  create unique index 索引名 on 表名 (列名1,列名2)

查找方式  最左匹配,select * from 表名 where 列名1=”xxx“,这样能走索引,即如果2列设置索引,在查找的时候会按照左边边的开始找

 

怎么查看当前sql是否走索引

explain SQL语句

 

注意事项:

避免使用select *

用count(1)或count(列)代替count(*)

能用char,就不用varchar()

组合索引代替多个单列索引

使用join来代替子查询

 

 

慢日志:

开启慢日志后,将一些查询慢的sql等写入到文件中,然后根据日志,可以优化SQL。慢日志的配置写在mysql的配置文件中。也可以直接修改内存的配置,不需要重启。

 

 

 

事务

事物是一个不可分割的工作单位,事物必须使数据库从一个状态切换到另一个一致性的状态,一个事物的执行不受其他事物的干扰,一个事物一旦提交,是对数据库的改变是永久性的

 

隐式事务:没有明显的开启和结束的标记,比如insert、update、delete

显式事务:必须有明显的开启和结束的标记(前提:必须先设置自动提交功能为禁用 set autocommit = 0)

语法:

步骤一:set autocommit = 0
start transaction(可选)

步骤二:编写事物的SQL语句(一般就是select、update、delete、insert语句)

步骤三:结束事物
commit 提交事物
rollback 回滚事物
savepoint 设置保存点 搭配rollback使用,回滚到当时的保存点处。

 

当同时运行多个事物,而这些事物访问数据库相同的数据时,如果没有采取隔离措施,就会导致并发问题。

脏读:

 

不可重复读:

 

 幻读:

 

 

MYSQL利用隔离级别避免并发问题

 

 

 

 

 

标签:index,列名,索引,查找,表名,事物
From: https://www.cnblogs.com/powfu/p/16953846.html

相关文章

  • postgresql mybatis like查询报错:org.postgresql.util.PSQLException: 栏位索引超过许
    最开始写法:...like'%#{code}%'...,报错改成:...likeCONCAT('%',#{code},'%')...,报错又改成:...likeCONCAT('%','#{code}','%')...,报错又又改成:...likeCONCAT('%......
  • es索引迁移Snapshot-迁移部分索引
    Snapshot-迁移部分索引源集群192.168.40.180192.168.40.181192.168.40.182目标集群192.168.40.61192.168.40.62192.168.40.63生产需要额外,挂载硬盘SnapshotAPI是......
  • MySQL的or/in/union与索引优化
    假设订单业务表结构为:order(oid,date,uid,status,money,time,…)其中:oid,订单ID,主键date,下单日期,有普通索引,管理后台经常按照date查询uid,用户ID,有普通索引,用户查......
  • CentOS7.0下完美部署Solr 搜索引擎
    一、环境准备:系统环境:CentOS-7.0.1406       tomcat-7.0.29       jdk-7u9       solr-4.7.0首先将软件包上传到/tmp目录下1、 jdk安装[ro......
  • MYSQL数据库之索引
    一、索引的概念索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于c语言的链表通过指针指向数据记录的内存地址)。使用索引后可......
  • Java8 在流处理中使用集合索引号
    代码publicclassAnswerApp{publicstaticvoidmain(String[]args){List<String>list=Lists.newArrayList("Answer","AnswerAIL","AI");List......
  • 这就是搜索引擎(7) 云计算之MapReduce
    0背景Map/Reduce是Google针对海量信息处理提出的非常著名的云计算模型,包括Hadoop等众多开源系统都采纳了这一方法,成为了主流的云计算模型。Map/Reduce是一个计算模型的......
  • [MySQL] 索引失效的情况
    1.查询条件中有or,即使有部分条件带索引也会失效2.like查询是以%开头3.如果列类型是字符串,那在查询条件中需要将数据用引号引用起来,否则不走索引4.索引列上参与计算......
  • 这就是搜索引擎(6) 云存储之BigTable
    0.背景BigTable是一个负责管理海量结构化或者半结构化数据的分布式存储系统。在Google的云存储体系中处于核心地位,起到了承上启下的作用。之前说的GFS是一个分布式的海量......
  • OI 笔记索引(持续更新中)
    A-基本算法。B-字符串。C-数学知识。D-数据结构。E-动态规划。F-图论。G-计算几何。......