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

焦作做网站/百度信息流广告怎么收费

焦作做网站,百度信息流广告怎么收费,php多用户商城双端app,宽屏公司网站源码php索引 索引是一个列表 —— 若干列集合和这些值的记录在数据表存储位置的物理地址 作用 加快检索速度唯一性索引 —— 保障数据唯一性加速表的连接分组和排序进行检索的时候 —— 减少时间消耗 一般建立原则 经常查询的数据主键外键连接字段排序字段少涉及、重复值多的字段…

索引

索引是一个列表 —— 若干列集合和这些的记录在数据表存储位置的物理地址

作用

  1. 加快检索速度
  2. 唯一性索引 —— 保障数据唯一性
  3. 加速表的连接
  4. 分组和排序进行检索的时候 —— 减少时间消耗

一般建立原则

  1. 经常查询的数据
  2. 主键
  3. 外键
  4. 连接字段
  5. 排序字段
  6. 少涉及、重复值多的字段不建立索引

MySQL中 InnoDB存储引擎支持索引

nameuse
普通索引 INDEX值可空,没有唯一性限制
唯一值索引 UNIQUE值可空,但唯一
主键索引 PRIMARY KEY一个表只能由一个PK, 系统自动创建
全文索引 FULLTEXT在 varchar、char、text 类型的列上创建,便于查询字符串类型

物理存储区分:

  • 聚集索引
  • 非聚集索引

创建 修改 删除 显示

CREATE INDEX

CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名[索引类型]
on 表名(索引列名)
[索引选项]
索引列名 =:
列名[(长度)][ASC|DESC]
  • SPATIAL表示为空间索引
  • 索引类型:BTREE或HASH
  • 列名
    • CHAR,VARCHAR, length可以小于字段实际长度 —— 减少索引文件
    • BLOB和TEXT类型,必须指定 length
    • 可包含属于同一个表的多个列,用逗号分开 —— 复合索引
  • 没有PK索引

在这里插入图片描述

ALTER TABLE语句可以修改表定义,包括向表中添加索引
ALTER TABLE tbl_name ADD PRIMARY KEY | UNIQUE | INDEX | FULLTEXT (column_list)

删除

DROP INDEX 索引名 ON 表名

Alter TABLE 表名 ... 
DROP PRIMARYKEY 
| DROP {INDEX | KEY} 索引名 
| DROP FOREIGN KEY 外键名

显示

SHOW INDEXES FROM tbl_name;
SHOW INDEXES FROM tbl_name IN db_name;
# *INDEX和KEY是INDEXES同义词

返回

nameuse
table表的名称
NON_UNIQUE如果索引可以包含重复项,则为1;如果可以,则为0。
KEY_NAME索引的名称。主键索引始终具有PRIMARY名称。
seq_in_index索引中的列序列号。第一列序列号从1开始。
column_name列名称。
collation排序规则表示列在索引中的排序方式。A表示升序;B表示降序;NULL表示未分类。
cardinality基数返回索引中估计的唯一值数。请注意,基数越高 —— 查询优化器使用索引进行查找的可能性就越大。
sub_part索引前缀。如果对整个列编制索引,则为null。否则,它会显示部分索引列的索引字符数
packed表示密钥是如何打包的。
nullYES——如果列可能包含NULL值,如果不包含空值则为空
INDEX_TYPE表示使用诸如索引方法BTREE,HASH,RTREE,或FULLTEXT。
comment有关索引的信息未在其自己的列中描述
index_comment显示使用COMMENT属性创建索引时指定的索引的注释。
¤visible索引是否对查询优化器可见或不可见; YES 是,NO 不是。
expression如果索引使用表达式而不是列或列前缀值,则表达式指示键部分的表达式,并且column_name列也为NULL

索引的使用情况

建议使用

  1. 唯一性的限制,比如用户名
  2. 频繁用WHERE查询字段
  3. GROUP BY和ORDER BY的列
  4. UPDATE、DELETE的WHERE条件列(类似2)
  5. DISTINCT字段需要创建索引

不建议使用

  1. WHERE GROUPBY ORDERBY 未出现的字段
  2. 记录较少的表 < 1000个
  3. 大量重复数据(比重偏差小
  4. 频繁更新的字段 (字段频繁更新导致索引更新效率慢)

失效

  1. 对索引进行 表达式计算
  2. 使用函数
  3. 使用LIKE且前缀为%

注意

  1. 多表JOIN连接操作时
  • 连接表尽量不超3张
  • 对WHERE条件创造index
  • 于连接的字段创建索引,并且该字段在多张表中的类型必须一致
  1. 索引列尽量设置为 NOT NULL 约束
  2. 使用联合索引的时候要注意最左原则
  • 从左到右的使用索引中的字段
  • 一条 SQL 语句可以只使用联合索引的一部分,但要从最左侧开始,否则失效
  • 当遇到范围查询(>、<、between、like)就会停止匹配

最左匹配原则
在这里插入图片描述

EXPAIN

nameuse
¤ id选择标识符
¤ select_type表示查询的类型
¤ table输出结果集的表
¤ partitions匹配的分区
¤ type访问类型,常用的有: ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)
¤ possible_keys表示查询时,可能使用的索引,为NULL表示没有相关索引
¤ key表示实际使用的索引,如果为NULL表示没有选择索引
¤ key_len索引字段的长度,不损失精确性的情况下,长度越短越好
¤ ref列与索引的比较
¤ rows扫描出的行数(估算的行数)
¤ filtered按表条件过滤的行百分比
¤ Extra执行情况的描述和说明

事务管理

MySQL 4.1开始支持事务,事务由作为一个单独单元的一个或多个SQL语句组成。

  • 这个单元中的每个SQL语句是互相依赖的,而且单元作为一个整体是不可分割的
  • 不能完成,整个单元就会回滚
  • 事务中的所有语句都成功的执行这个事务才被成功地执行

提交

当一个会话开始时,系统变量AUTOCOMMIT值为1,即自动提交功能是打开的

任意一条SQL语句发送到服务器时,MySQL服务器会立即解析、执行并将更新结果提交到数据库文件中

在执行事务时要首先关闭MySQL的自动提交,使用命令“set autocommit=0;”可以关闭MySQL的自动提交

  • 当MySQL关闭自动提交后,可以使用COMMIT命令来完成事务的提交,也标志transaction的结束
  • 使用命令“start transaction;”可以开启一个事务 —— 隐式关闭MySQL的提交

注意

  1. transaction不能嵌套 —— 开始第二个事务会自动提交第一个事务
  2. 下面语句会隐式执行commit
  • set autocommit=1、rename table、truncate table;
  • create、alter、drop;
  • grant、revoke、set password、create user、drop user、rename user
  • lock tables、unlock tables

example

set autocommit=0;
insert into account values(111,500);
commit;
insert into account values(222,500);
create table student(
studentid char(6) primary key,
name varchar(10),
sex char(2)
)engine=innodb;
insert into account values(333,500);
select * from account;

在上面SQL语句执行过程中

  1. 首先使用命令“set autocommit=0;”关闭
    MySQL的自动提交。
  2. 插入第一条记录后,使用commit命令完成事务的提交。
  3. 当插入第二条记录后,使用create命令创建数据表,由于create命令在执行时会隐式地执行commit命令,所以插入的第二条记录也会被提交。
  4. 当插入完第三条记录时,使用select语句查询到的是内存中的记录,所以查询结果可以看到新添加的三条记录。
  • 由于最后一条语句并没有提交,所以该值并没有写到数据库文件中。另一客户机执行查询时,看到的是外存数据库文件在服务器内存中的一个副本,所以只查询到两条添加记录
  • 当前客户机使用commit命令提交事务后,两个客户机看到的查询结果是相同的

回滚

销未提交的事务所做的各种修改操作,并结束当前这个事务

若只撤销一部分,可以用“部分回滚”

  • savepoint 保存点名;”可以在事务中设置一个保存点,使用“rollback to savepoint 保存点名;”可以将事务回滚到保存点状态

四大特性和隔离级别

四大特性

  • 事务是一个单独的逻辑工作单元,事务中的所有更新操作要么都执行,要么都不执行。
  • 事务保证了一系列更新操作的原子性。如果事务与事务之间存在并发操作,则可以通过事务之间的隔离级别来实现事务的隔离,从而保证事务间数据的并发访问。

ACID
ATOMICITY CONSISTENCY ISOLATION DURABILITY

  1. 原子性意味着每个事务都必须被认为是一个不可分割的单元,事务中的操作必须同时成功事务才是成功的。如果事务中的任何一个操作失败,则前面执行的操作都将回滚,以保证数据的整体性没有受到影响
  2. 事务的一致性保证了事务完成后,数据库能够处于一致性状态。如果事务执行过程中出现错误,那么数据库中的所有变化将自动地回滚,回滚到另一种一致性状态
  • 由MySQL的日志机制处理,它记录了数据库的所有变化,为事务恢复提供了跟踪记录
  • 如果系统在事务处理中发生错误,MySQL恢复过程将使用这些日志来发现事务是否已经完全成功地执行,是否需要返回
  1. 事务的隔离性确保多个事务并发访问数据时,各个事务不能相互干扰; 的每个事务在自己的空间执行,并且事务的执行结果只有在事务执行完才能看到 —— 其他事务暂时看不到结果 (可以使用页级锁定或行级锁定来隔离)
  2. 事务的持久性意味着事务一旦提交,其改变会永久生效,不能再被撤销。 —— 即使系统崩溃,一个提交的事务仍然存在

隔离级别

从低到高分别是

read uncommitted(读取未提交的数据)

read committed(读取提交的数据)

repeatable read(可重复读)

serializable(串行化)。

  1. read uncommitted(读取未提交的数据)提供了事务之间的最小隔离程度,处于这个隔离级别的事务可以读到其他事务还没有提交的数据
  2. read committed(读取提交的数据)处于这一级别的事务可以看见已经提交事务所做的改变
  3. repeatable read(可重复读)这是MySQL默认的事务隔离级别,它确保在同一事务内相同的查询语句其执行结果总是相同的(即使某个事务突然改了某个数据而且事务还没结束,前后查询的内容还是一样的)
  4. serializable(串行化) 最高级别的隔离,它强制事务排序,使事务一个接一个地顺序执行

解决多用户问题

用户对数据库并发访问时,为了确保事务完整性和数据库一致性,需要使用锁定 —— 防止用户读取正在由其他用户更改的数据,并可以防止多个用户同时更改相同数据

  • 高级别的事务隔离 —— 有效地实现并发,但会降低事务并发访问的性能

  • 低级别的事务隔离可以提高事务的并发访问性能,但可能导致并发事务中的脏读、不可重复读和幻读等问题

三个问题:

脏读不可重复读幻读
read uncommitted
read committed×
repeatable read××
serializable×××

脏读

一个事务可以读到另一个事务未提交的数据

  1. 打开MySQL客户机A,将当前MySQL会话的事务隔离级别设置为read uncommitted。
    set session transaction isolation level read uncommitted
  2. 开启事务,查询账号为“111”账户的余额。
  3. 打开MySQL客户机B,将当前MySQL会话的事务隔离级别设置为read uncommitted。
  4. 开启事务,将账号为“111”账户余额增加800。
  5. 在MySQL客户机A中查看账号为“111”账户的余额。
  6. 关闭MySQL客户机A和客户机B后,再查看账号为“111”账户的余额。

这个时候 A 读到了B未结束事务但已更新的结果(也就是加了 800)

不可重复读

同一个事务中,两条相同的查询语句其查询结果不一致

  • 一个事务访问数据时,另一个事务对该数据进行修改并提交,导致第一个事务两次读到的数据不一样
  1. 将MySQL客户机A与客户机B使用语句“set session transaction isolation level read committed;”,将他们的隔离级别都设置为read committed。
  2. 与例6-5相同,首先在MySQL客户机A中查询账号为“111”账户的余额。
  3. 在MySQL客户机B中将账号为“111”账户余额增加800,未提交事务时在MySQL客户机A中查询账号为“111”账户的余额,对比是否出现脏读。
  4. MySQL客户机B中提交事务后,在MySQL客户机A中查询账号为“111”账户的余额,对比是否出现不可重复读。

A读到的数据是B事务提交后的数据

幻读

当前事务读不到其他事务已经提交的修改(别人已经改了而且提交事务了,而你的读的内容还是修改之前的)

  1. 将MySQL客户机A与客户机B使用语句“set session transaction isolation level repeatable read;”,将他们的隔离级别都设置为repeatable read。
  2. 在MySQL客户机A中开启事务并查询账号为“999”的账户信息。
  3. 在MySQL客户机B中开启事务,插入一条账户信息(999,700),然后提交事务。
  4. 在MySQL客户机A中再次查账号为“999”的账户信息,判断是否可以避免不可重复读。
  5. 在MySQL客户机A中插入账户信息(999,700),并判断是否可以插入

相关文章:

数据库实践LAB大纲 06 INDEX

索引 索引是一个列表 —— 若干列集合和这些值的记录在数据表存储位置的物理地址 作用 加快检索速度唯一性索引 —— 保障数据唯一性加速表的连接分组和排序进行检索的时候 —— 减少时间消耗 一般建立原则 经常查询的数据主键外键连接字段排序字段少涉及、重复值多的字段…...

网络安全实验室6.解密关

6.解密关 1.以管理员身份登录系统 url&#xff1a;http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/index.php 进入网站点击忘记密码的链接&#xff0c;进入到重置密码的模块 输入aaa&#xff0c;点击抓包&#xff0c;发送到重放模块go 查看返回的链接…...

了解并发编程

并发与并行的概念: 并发:一段时间内(假设只有一个CPU)执行多个线程,多个线程时按顺序执行 并行:同个时间点上,多个线程同时执行(多个CPU) 什么是并发编程? 在现代互联网的应用中,会出现多个请求同时对共享资源的访问情况,例如在买票,秒杀与抢购的场景中 此时就会出现线程安…...

(C语言)程序环境和预处理

问&#xff1a;1. 什么是C语言的源代码&#xff1f;2. 由于计算机只认识什么&#xff1f;因此它只能接收与执行什么&#xff1f;也就是什么&#xff1f;3. 在ANSI C的任何一种实现中&#xff0c;存在哪两个不同的环境&#xff1f;在这两种环境里面分别干什么事情&#xff1f;4.…...

RiProV2主题美化增加支付页底部提示语ritheme主题美化

美化背景 默认的RiProV2主题在支付提示页,是没有这一行提示的 希望增加根据用户类别,未登录用户购买时提示:当前为游客模式购买。或者其他提示,提示用户未登录购买不保存购买记录等。 索引关键字:ritheme主题美化之增加支付页底部提示语,RiProV2主题美化增加支付页底部提…...

2022年文章分类整理

文章目录JetPack系列Kotlin相关View相关多线程相关存储相关Gradle相关动画相关其他2022年公众号(名字&#xff1a;代码说)发表的文章&#xff0c;分类整理一下&#xff0c;方便阅读&#xff01;2023&#xff0c;继续加油&#xff0c;共勉&#xff01;JetPack系列 Android Jetp…...

蓝牙设备中的Device UUID 与 Service UUID

Device UUID也可以被称作为DeviceID。 Android 设备上扫描获取到的 deviceId 为外围设备的 MAC 地址&#xff0c;相对固定。 iOS 设备上扫描获取到的 deviceId 是系统根据外围设备 MAC 地址及发现设备的时间生成的 UUID&#xff0c;是设备上的Core Bluetooth为该设备分配的标识…...

【学习记录】PCA主成分分析 SVD奇异值分解

在看MSC-VO代码的过程中&#xff0c;大量出现了奇异值分解的内容&#xff0c;本身对这部分了解不多&#xff0c;这里补一下课&#xff0c;参考b站up主小旭学长的视频&#xff0c;链接为&#xff1a;PCA主成分分析和SVD主成分分析 PCA主成分分析 PCA根本目的在于让数据在损失尽…...

用 Python 调用 GPT-3 API

用 Python 调用 GPT-3 API GPT-3 是去年由 Open AI 推出的语言机器学习模型。它因其能够写作、写歌、写诗&#xff0c;甚至写代码而获得了广泛的媒体关注&#xff01;该工具免费使用&#xff0c;只需要注册一个电子邮件即可。 GPT-3 是一种叫 transformer 的机器学习模型。具体…...

类和对象实操之【日期类】

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f38a;每篇一句&#xff1a; 图片来源 The pessimist complains about the wind; the optimist expects it to change; the realist adjusts the sails. 悲观主义者抱怨风;乐观主义者期望它…...

微搭中如何实现弹性布局

我们在实际开发中经常可能会有一些社交的场景&#xff0c;比如开发一个类似朋友圈九宫格图片展示的功能。因为图片的数量不确定&#xff0c;所以需要实现图片的从左到右顺序排列。 在微搭中可以以可视化的方式设置样式。但是对于我们这类特殊需求&#xff0c;只用可视化设置显…...

九龙证券|外资强势出手!这只科创板百元股,被疯狂加仓

本周&#xff0c;北上资金净买入29.32亿元&#xff0c;连续第13周加仓A股。分商场看&#xff0c;北上资金加仓重点倾向于沪市的白马蓝筹股&#xff0c;沪股通取得50.34亿元&#xff0c;深股通则被净卖出21.02亿元。 食品饮料本周取得逾23亿元的增持&#xff0c;居职业首位&…...

51单片机最强模块化封装(4)

文章目录 前言一、创建key文件,添加key文件路径二、key文件编写三、模块化测试总结前言 本篇文章将为大家带来按键的模块化封装,这里使用到了三行按键使得我们的代码更加简便。 按键原理:独立按键 一、创建key文件,添加key文件路径 这里的操作就不过多解释了,大家自行看…...

五、Git本地仓库基本操作——分支管理

1. 什么是分支&#xff1f; master分支 我们在初始化git仓库的时候&#xff0c;会默认创建一个master分支&#xff0c;HEAD指针这时就会默认执行master分支。当我们在master分支提交&#xff08;commit&#xff09;了更新之后&#xff0c;master分支就会指向当前当前最新的co…...

vscode搭建python Django网站开发环境

这里使用pip安装的方式&#xff0c;打开命令行&#xff0c;输入执行&#xff1a; pip install django2.2这里选择安装2.2版本是因为是新的lts版本&#xff0c;长期支持稳定版。 接下来再安装pillow&#xff0c;Django底层一部分是基于pillow进行的。 pip install pillowpylint…...

【mybatis】实现分页查询

一 .使用原生分页器的实体类 1.1 java代码部分 方法多 不易书写 package cn.bdqn.entity;public class Page {private Integer pageIndex;//页码private Integer pageSize;//页大小 显示多少行数据private Integer totalCounts;//数据的总行数private Integer totalPages;//…...

CF1560D Make a Power of Two 题解

CF1560D Make a Power of Two 题解题目链接字面描述题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路代码实现备注题目 链接 https://www.luogu.com.cn/problem/CF1560D 字面描述 题面翻译 给定一个整数 nnn。每次操作你可以做两件事情中的一件&am…...

C#开发的OpenRA的读取文件的函数

C#开发的OpenRA的读取文件的函数 在OpenRA游戏里,读取文件是必备的功能。 因为游戏大部分文件都是图片、动画、语音。 很久以前,我以为开发游戏的主要功能是在程序开发上, 其实游戏的大部分工作都不是在开发上,而是在美工方面。 因为游戏跟电影是一样,就是不断地展示场景,…...

SpringBoot结合XXL-JOB实现定时任务

Quartz的不足 Quartz 的不足&#xff1a;Quartz 作为开源任务调度中的佼佼者&#xff0c;是任务调度的首选。但是在集群环境中&#xff0c;Quartz采用API的方式对任务进行管理&#xff0c;这样存在以下问题&#xff1a; 通过调用API的方式操作任务&#xff0c;不人性化。需要…...

【Node.js】 创建web服务器

Node.js什么是客户端&#xff0c;什么是服务器服务器和普通电脑的区别什么是http模块导入http模块服务器相关概念创建web服务器的基本步骤req请求对象req响应对象解决中文乱码根据不同的url响应不同的html内容什么是客户端&#xff0c;什么是服务器 客户端在网络节点中&#x…...

基于go语言实现RestFul交互

一、RestFul 1.1 RestFul的介绍 RESTFUL&#xff08;Representational State Transfer&#xff09;是一种网络应用程序的设计风格和开发方式&#xff0c;基于HTTP或HTTPS&#xff0c;可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务接口的场景&…...

情感溢出:读《浣溪沙》

浣溪沙 谁念西风独自凉 作者 纳兰性德 谁念西风独自凉&#xff0c;萧萧黄叶闭疏窗&#xff0c;沉思往事立残阳。 被酒莫惊春睡重&#xff0c;赌书消得泼茶香&#xff0c;当时只道是寻常。 记得年轻时学这篇词&#xff0c;就是愣背&#xff0c;现在也就记得这句当时只道是寻常…...

深入解读.NET MAUI音乐播放器项目(一):概述与架构

系列文章将分步解读音乐播放器核心业务及代码&#xff1a; 深入解读.NET MAUI音乐播放器项目&#xff08;一&#xff09;&#xff1a;概述与架构深入解读.NET MAUI音乐播放器项目&#xff08;二&#xff09;&#xff1a;播放内核深入解读.NET MAUI音乐播放器项目&#xff08;三…...

【Python小游戏】某程序员将套圈游戏玩儿到了巅峰,好嗨哟~Pygame代码版《牛牛套圈》已上线,大人的套圈游戏太嗨了,小孩勿进。

前言 世上选择那么多。 关注栗子同学会是您最明智的选择哦。 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移步至CSDN社区或文末公众hao即可免费。 “幸运牛牛套圈圈”套住欢乐&#xff0c;圈住幸福&#xff0c;等你来挑战&#xf…...

php的declare命令如何使用?

php中的declare结构用来设定一段代码的执行指令declare用于执行3个指令&#xff1a;ticks,encoding,strict_typesdeclare结构用于全局范围&#xff0c;影响到其后的所有代码&#xff08;但如果有declare结构的文件被其他文件包含&#xff0c;则对包含他的父文件不起作用&#x…...

嵌软工程师要掌握的硬件知识2:一文看懂什么开漏和推挽电路(open-drain / push-pull)

想了解开漏和推挽,就要先了解一下三极管和场效应管是什么,在其他章节有详细介绍,本文就不再进行赘述。 1 推挽(push pull)电路 1.1 理解什么是推挽电路 - 详细介绍 如图所示,Q3是个NPN型三极管,Q4是个PNP型三极管。 1)当Vin电压为正时,上面的N型三极管控制端有电…...

1.2.6存储结构-磁盘管理:单缓冲区与双缓冲区读取、流水线周期、计算流水线执行时间

1.2.6存储结构-磁盘管理&#xff1a;单缓冲区与双缓冲区读取、流水线周期、计算流水线执行时间流水线周期计算流水线执行时间微秒&#xff0c;时间单位&#xff0c;符号μs&#xff08;英语&#xff1a;microsecond &#xff09;&#xff0c;1微秒等于百万分之一秒&#xff08;…...

【pytest接口自动化测试】结合单元测试框架pytest+数据驱动模型+allure

api&#xff1a; 存储测试接口 conftest.py :设置前置操作 目前前置操作&#xff1a;1、获取token并传入headers&#xff0c;2、获取命令行参数给到环境变量,指定运行环境commmon&#xff1a;存储封装的公共方法 connect_mysql.py&#xff1a;连接数据库http_requests.py: 封装…...

展锐平台WIFI吞吐问题解决方案

同学,别退出呀,我可是全网最牛逼的 WIFI/BT/GPS/NFC分析博主,我写了上百篇文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。 一、Wi-Fi 吞吐验收标准 预置条件:屏蔽房;DUT 距离 AP 1m 左右;测试 AP 不加密;…...

全局向量的词嵌入(GloVe)

诸如词-词共现计数的全局语料库统计可以来解释跳元模型。 交叉熵损失可能不是衡量两种概率分布差异的好选择&#xff0c;特别是对于大型语料库。GloVe使用平方损失来拟合预先计算的全局语料库统计数据。 对于GloVe中的任意词&#xff0c;中心词向量和上下文词向量在数学上是等…...