mysql创建索引

10.31 总结

人盡茶涼 提交于 2019-12-03 02:37:19
1.Python操作mysql import pymysql #连接数据库的参数 conn=pymysql.connect(host='localhost',user='root',passward='',database='tt',charset='utf8') #cursor=conn.cursor() #默认返回的值是元组类型 cursor=conn.cursor(cursor=pysql.cursors.DictCursor)#返回的值是字典类型 sql="select * from userinfo" cursor.execute(sql) #res=cursor.fetchall() #取出所有的数据 返回的是列表套字典 #res=cursor.fetchone() #取出一条数据 返回的是字典类型 res=cursor.fetchmany(12) #指定获取多少条数据 返回的是列表套字典 print(res) cursor.close() conn.close() 运行结果: [{'id': 1, 'name': 'zekai', 'depart_id': 1}, {'id': 2, 'name': 'xxx', 'depart_id': 2}, {'id': 3, 'name': 'zekai1', 'depart_id': 3}, {'id': 4, 'name'

python操作数据库课堂小结day36

随声附和 提交于 2019-12-03 02:36:17
python 操作mysql 安装pymysql模块 pip install pymysql sql注入问题 输入用户名: qaa ' or 1=1 # 输入密码: dasdasda select * from user where name ='qaa' or 1=1 # ' and password ='afasa' 不需要输入正确用户名和密码就能查看数据 产生的原因 因为过于相信用户输入的内容,根本没有做任何的检验 解决的方法 sql = 'select * from user where name = %s and password = %s' cursor.execute(sql,(user,pwd)) 用 cursor.execute 来检验输入的用户名和密码 连接 连接数据库的参数 conn = pymysql.connect(host='localhost',user ='root',passwrod ='123',database='test',charset='utf8') cursor=conn.cursor() 默认返回的值是元祖类型 cursor =conn.cursor(cursor=pymysql.cursors.DictCursor) 返回的是字典类型 查 fetchall(): 取出所有的数据,返回的是列表套字典 fetchone():取出一条数据

es

こ雲淡風輕ζ 提交于 2019-12-03 02:35:50
1、为什么要用es 我们的要求:(1)搜索解决方案要 快 (2)最好是有一个 零配置 和一个完全免费的搜索模式(3)我们希望能够简单地 使用JSON/XML通过HTTP的 索引数据 (4)我们希望我们的搜索服务器始终可用,并能够从一台开始并在需要 扩容时方便 地扩展到数百(5)我们要 实时搜索 ,我们要简单的多租户,我们希望建立一个云的解决方案 2、es的优点(lucene的缺点es都已解决)   Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。但是,Lucene只是一个库,使用非常复杂。   lucene缺点:    1)只能在JAVA项目中使用,并且要以jar包的方式直接集成项目中.   2)配置及使用非常复杂-创建索引和搜索索引代码多    3)不支持集群环境-索引数据不同步(不支持大型项目)    4 )索引数据如果太多就不行。 索引库和应用所在同一个服务器 , 共同占用硬盘 . 共用空间少 . 3、es解决了lucene的那些缺点:   (1) 优化 Lucene 的调用方式, 通过简单的 RESTful API 来隐藏 Lucene 的复杂性(调用简单)  (2)并实现了高可用的分布式集群的搜索方案( 高可用,分布式 )   (3) 分布式的实时分析搜索引擎(实时)   (4) 可以扩展到上百台服务器,处理 PB 级结构化或非结构化数据

索引

99封情书 提交于 2019-12-03 02:35:22
目录 什么是索引 为什么要使用索引 索引的底层原理 索引的种类 索引的创建 主键索引 唯一索引 普通索引 索引的优缺点 不会命中索引的情况 组合索引最左前缀 explain查询性能分析 慢查询日志 什么是索引 索引的本质是一个特殊的文件,是存储引擎快速找到记录的一种数据结构。 类比:查字典的过程,通过拼音索引 索引的本质: 通过不断地缩小想要获取数据地范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。 为什么要使用索引 使用索引就是为了提高查询效率 索引的底层原理 使用B+树 索引的种类 主键索引:加速查找、不为空、不能重复 唯一索引:加速查询、不为空的字段不能重复 联和唯一索引:unique(name, password) 普通索引:加速查找 index(name) 联合索引:index(name, password) 索引的创建 主键索引 新增主键索引 --创建的时候增加主键索引 create table t1( id int auto_increment primary key, name varchar(32) not null default '' )charset utf8; --表创建完了之后再增加主键索引 alter table t2 add primary key(id); 删除主键索引

MySQL面试题

不想你离开。 提交于 2019-12-03 01:47:04
1、MySQL的复制原理以及流程 (1)、复制基本原理流程 1. 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中; 2. 从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中; 3. 从:sql执行线程——执行relay log中的语句; (2)、MySQL复制的线程有几个及之间的关联 MySQL 的复制是基于如下 3 个线程的交互( 多线程复制里面应该是 4 类线程): 1. Master 上面的 binlog dump 线程,该线程负责将 master 的 binlog event 传到slave; 2. Slave 上面的 IO 线程,该线程负责接收 Master 传过来的 binlog,并写入 relay log; 3. Slave 上面的 SQL 线程,该线程负责读取 relay log 并执行; 4. 如果是多线程复制,无论是 5.6 库级别的假多线程还是 MariaDB 或者 5.7 的真正的多线程复制, SQL 线程只做 coordinator,只负责把 relay log 中的 binlog读出来然后交给 worker 线程, woker 线程负责具体 binlog event 的执行; (3)

MySQL常见问题

巧了我就是萌 提交于 2019-12-03 01:46:33
事务四大特性 原子性:不可分割的操作单元,事务中所有操作,要么全部成功;要么撤回到执行事务之前的状态 一致性:如果在执行事务之前数据库是一致的,那么在执行事务之后数据库也还是一致的; 隔离性:事务操作之间彼此独立和透明互不影响。事务独立运行。这通常使用锁来实现。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。 持久性:事务一旦提交,其结果就是永久的。即便发生系统故障,也能恢复。 MySQL的事务隔离级别 未提交读(Read Uncommitted):允许脏读,其他事务只要修改了数据,即使未提交,本事务也能看到修改后的数据值。也就是可能读取到其他会话中未提交事务修改的数据 提交读(Read Committed):只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别 (不重复读)。 可重复读(Repeated Read):可重复读。无论其他事务是否修改并提交了数据,在这个事务中看到的数据值始终不受其他事务影响。 串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞 MySQL数据库(InnoDB引擎)默认使用可重复读( Repeatable read) 索引 数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用 B_TREE。B

MySQL数据库优化

一曲冷凌霜 提交于 2019-12-03 01:36:47
MySQL性能 最大数据量 最大并发数 查询耗时0.5秒 实施原则 数据表设计 数据类型 避免空值 text类型 索引优化 索引分类 优化原则 SQL优化 分批处理 不做列运算 避免Select * 操作符<>优化 OR优化 IN优化 LIKE优化 JOIN优化 LIMIT优化 其他数据库   博主负责的项目主要采用阿里云数据库MySQL,最近频繁出现慢SQL告警,执行时间最长的竟然高达5分钟。导出日志后分析,主要原因竟然是 没有命中索引和没有分页处理 。其实这是非常低级的错误,我不禁后背一凉,团队成员的技术水平亟待提高啊。改造这些SQL的过程中,总结了一些经验分享给大家,如果有错误欢迎批评指正。 MySQL性能 最大数据量    抛开数据量和并发数,谈性能都是耍流氓 。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 文件系统 单文件大小限制 FAT32 最大4G NTFS 最大64GB NTFS5.0 最大2TB EXT2 块大小为1024字节,文件最大容量16GB;块大小为4096字节,文件最大容量2TB EXT3 块大小为4KB,文件最大容量为4TB EXT4 理论可以大于16TB 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置

pda问题

匿名 (未验证) 提交于 2019-12-03 00:22:01
索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行,还需要考虑每次读入数据页的IO开销。而如果采取索引,则可以根据索引指向的页以及记录在页中的位置,迅速地读取目标页进而获取目标记录。 大多数情况下都(默认)采用B树来构建索引。只是空间列类型的索引使用R-树,并且MEMORY表还支持hash索引。B树是平衡多叉树,每个节点存放多少个值取决于值所占的空间,这与每一张数据页存放多少条记录与记录信息量有关同理。节点中的值是以非降序进行排列的,节点中的值总是小于等于指向它的结点中的值。 MySQL使用B树构造索引的情况下,是由叶子指向具体的页和记录的。并且一个叶子有一个指针指向下一个叶子。 使用索引需要注意: ⑴只对WHERE和ORDER BY需要查询的字段设置索引,避免无意义的硬盘开销; ⑵组合索引支持前缀索引; ⑶更新表的时候,如增删记录,MySQL会自动更新索引,保持树的平衡;因此更多的索引意味着 更多的维护成本 索引的字段类型问题 text类型,也可建索引(需指定长度) myisam存储引擎索引键长度综合不能超过1000字节 用来筛选的值尽量保持和索引列同样的数据类型 索引分四类: index ----普通的索引,数据可以重复 fulltext----全文索引,用来对大表的文本域(char,varchar,text

20、索引

匿名 (未验证) 提交于 2019-12-03 00:14:01
索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大 提高 MySQL的 检索速度 。 索引分 单列索引和组合索引 。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。 创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件 (一般作为 WHERE 子句的条件)。 实际上,索引也是一张表,该表保存了 主键与索引字段 ,并指向实体表的记录。 虽然索引大大提高了查询速度,同时却会 降低更新表的速度 ,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。 建立索引会 占用磁盘空间 的索引文件。 1、 普通索引 1.1 创建表的时候直接指定 语法结构: CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) ); 实例: create table test5( id int, name varchar(20), index index_id(id) ); create table test5( id int, name varchar(20), index (id,name) );

数据库索引

匿名 (未验证) 提交于 2019-12-02 23:47:01
01.在创建索引的时候都会考虑哪些因素呢? :对于查询概率比较高,经常作为where条件的字段设置索引。 02.做联合索引多个字段之间顺序你们是如何选择的呢? 1.为什么要用索引? 当一个表中有上千万条数据,如果按名字一行一行去匹配查找,全表扫描,效率会很慢。这时候就需要用索引,相当于给表加了目标和标题,可以缩小查找范围和加快查找速度。 索引是一种数据结构。一个索引是存储的表中一个特定列的值数据结构(最常见的是B-Tree和Hash索引)。索引是在表的列上创建。所以,要记住的关键点是索引包含一个表中列的值,并且这些值存储在一个数据结构中。 3.Hash索引的优缺点? 优点:哈系索引的工作方式是将列的值作为索引的键值(key),和键值相对应实际的值(value)是指向该表中相应行的指针位置。查新name=“jes”这样的sql效率很快,等值查询的场景更快。           缺点:1.哈希表是无顺的数据结构,假如你想要找出所有小于40岁的员工 就不能用哈希索引。              2.哈希索引不支持多列联合索引的最左匹配规则 如果有大量重复键值得情况下,哈希索引的效率会很低,因为存在哈希碰撞问题。 4.B-Tree索引是怎么提升性能? :假设我们在 Employee_Name这一列上创建一个B-Tree索引。这意味着当我们用之前的SQL查找姓名是‘Jesus’的雇员时