索引

MySQL 之全文索引

て烟熏妆下的殇ゞ 提交于 2020-02-06 01:48:18
最近在复习数据库索引部分,看到了 fulltext,也即全文索引,虽然全文索引在平时的业务中用到的不多,但是感觉它有点儿意思,所以花了点时间研究一下,特此记录。 引入 概念 通过数值比较、范围过滤等就可以完成绝大多数我们需要的查询,但是,如果希望通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值比较。全文索引就是为这种场景设计的。 你可能会说,用 like + % 就可以实现模糊匹配了,为什么还要全文索引?like + % 在文本比较少时是合适的,但是对于大量的文本数据检索,是不可想象的。全文索引在大量的数据面前,能比 like + % 快 N 倍,速度不是一个数量级,但是全文索引可能存在精度问题。 你可能没有注意过全文索引,不过至少应该对一种全文索引技术比较熟悉:各种的搜索引擎。虽然搜索引擎的索引对象是超大量的数据,并且通常其背后都不是关系型数据库,不过全文索引的基本原理是一样的。 版本支持 开始之前,先说一下全文索引的版本、存储引擎、数据类型的支持情况 MySQL 5.6 以前的版本,只有 MyISAM 存储引擎支持全文索引; MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存储引擎均支持全文索引; 只有字段的数据类型为 char、varchar、text 及其系列才可以建全文索引。 测试或使用全文索引时,要先看一下自己的

python3 ------列表

帅比萌擦擦* 提交于 2020-02-06 01:45:10
1.列表的定义 列表是以方括号[] 包围,元素以逗号分隔的序列,数据结构之一 ; 空列表 list = [] list = [1,2,"test","测试"] print(type(list)) print(list) 2.列表的特点 a.有序 b.可变(可以对列表内的元素进行增删改查) c.可以存储不同的数据类型和数据结构 d.与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。 3.查看列表的操作方式 dir(list) list = [1,2,"adb","test"] print(dir(list)) 4.列表的访问 4.1 根据下标 ----索引位访问 list = [1,"google","taobao",3,"测试"] print(list[2]) 4.2 列表的反转函数 .reverse() ---直接把列表的内容反转,改变了列表原来的顺序 list = [1,"google","taobao",3,"测试"] list.reverse() print(list) 运行结果: 4.3 列表的反转输出 ----对列表的元素进行反向排序,不会改变列表原来的顺序 list = [1,"google","taobao",3,"测试"] print(list[::-1]) 4.4 区间截取,步长 ----类似字符串 list = [1,"google",

数据库索引相关

本秂侑毒 提交于 2020-02-06 01:08:26
数据库索引原理 为什么要给表加上主键? 为什么加索引后会使查询变快? 为什么加索引后会使写入、修改、删除变慢? 什么情况下要同时在两个字段上建索引? 这些问题他们可能不一定能说出答案。知道这些问题的答案有什么好处呢?如果开发的应用使用的数据库表中只有1万条数据,那么了解与不了解真的没有差别, 然而, 如果开发的应用有几百上千万甚至亿级别的数据,那么不深入了解索引的原理, 写出来程序就根本跑不动,就好比如果给货车装个轿车的引擎,这货车还能拉的动货吗? 接下来就讲解一下上面提出的几个问题,希望对阅读者有帮助。 网上很多讲解索引的文章对索引的描述是这样的「索引就像书的目录, 通过书的目录就准确的定位到了书籍具体的内容」,这句话描述的非常正确, 但就像脱了裤子放屁,说了跟没说一样,通过目录查找书的内容自然是要比一页一页的翻书找来的快,同样使用的索引的人难到会不知道,通过索引定位到数据比直接一条一条的查询来的快,不然他们为什么要建索引。 想要理解索引原理必须清楚一种数据结构「平衡树」(非二叉),也就是b tree或者 b+ tree,重要的事情说三遍:“平衡树,平衡树,平衡树”。当然, 有的数据库也使用哈希桶作用索引的数据结构 , 然而, 主流的RDBMS都是把平衡树当做数据表默认的索引数据结构的。 我们平时建表的时候都会为表加上主键, 在某些关系数据库中, 如果建表时不指定主键

实用的开源百度云分享爬虫项目yunshare - 安装篇

我与影子孤独终老i 提交于 2020-02-05 23:56:54
今天开源了一个百度云网盘爬虫项目,地址是 https://github.com/callmelanmao/yunshare 。 百度云分享爬虫项目 github上有好几个这样的开源项目,但是都只提供了爬虫部分,这个项目在爬虫的基础上还增加了保存数据,建立elasticsearch索引的模块,可以用在实际生产环境中,不过web模块还是需要自己开发 安装 安装node.js和pm2,node用来运行爬虫程序和索引程序,pm2用来管理node任务 安装mysql和mongodb,mysql用来保存爬虫数据,mongodb用来保存最终的百度云分享数据,这些数据是json格式的,用mongodb保存更方便。 git clone https://github.com/callmelanmao/yunshare cnpm i 推荐使用cnpm命令安装npm依赖,最简单的安装方式 $ npm install -g cnpm --registry=https://registry.npm.taobao.org 更多安装cnpm的命令可以去 npm.taobao.org 上面找。 初始化 爬虫数据(主要是url列表)都是保存在mysql数据库的,yunshare使用sequelizejs做orm映射,源文件在 src/models/index.js ,默认的mysql用户名和密码都是root

MySQL索引及执行计划

[亡魂溺海] 提交于 2020-02-05 22:54:47
MySQL索引及执行计划 索引 合理的建立索引可以加快数据查询,例如,学校图书管为每一本书编号,根据编号可以快速锁定一本书所在位置。MySQL索引默认B+树索引。索引虽然能够提高检索效率,但同时也会降低更新的速度,因为 insert 、update、delete 也会操作索引文件,会调整因为更新等操作带来的键值变化后的索引信息。 索引类型 主键索引:唯一索引,并且并指定为 primary key ,每个表中只能有一个主键 唯一索引:索引列的所有值都只能出现一次,即值必须唯一,值可以为空 普通索引:基本的索引类型,值可以为空,没有唯一性限制 复合索引:一个索引中包含多个列 何时建立索引 主键自动创建唯一索引 频繁作为查询条件的字段适合创建索引 查询中与其他表关联的字段适合创建索引 频繁更新的字段不适合创建索引,因为在更新记录的同时会更新索引 where条件中使用不到的字段不需要创建索引 在高并发下,在单值索引和复合索引中,复合索引更合适 order by字段添加索引可以提高排序速度 不需要索引 表记录较少 经常增删改的表 数据重复且分布平均的表,如性别 执行计划 可以使用 explain 关键字模拟优化器执行sql查询语句,从而分析查询语句或者表结构的性能瓶颈。 通过查看执行计划,可以了解到表的读取顺序、数据读取操作、哪些索引可以使用、哪些索引被实际使用、表之间的引用

.NET工程师必须掌握的知识点

风格不统一 提交于 2020-02-05 21:00:45
Microsoft SQL Server 数据库 一、创建和维护数据库 1、数据库   SQL Server 数据库的组成部分?(参见联机丛书)   如何保证数据库的完整性、安全性、并发性?   数据库设计创建步骤?(参见联机丛书 - 创建数据库计划)   数据库设计考虑的事项?(参见联机丛书) 2、SQL Server 表   设计表时应注意哪些?   如何创建和使用约束、默认值和空值?   数据完整性分类有哪些?并且它们分别包括哪些约束?   约束有哪些?语法?   如何添加、修改和删除列? 在哪些情况下不可删除列?   创建和修改表 3、SQL Server 索引   索引的概念   索引的体系结构   索引的特性   索引的优点   索引的缺点   索引语法结构   主键、约束和索引   索引创建基本准则   索引的实际应用   重建索引? 4、SQL Server 视图   http://hi.baidu.com/ztf704/blog/item/9274cefc64a93ffffc037fb4.html   视图概念   功能特性   视图的几大优点   在创建视图前请考虑则   索引视图   索引视图必须满足下列要求   分区视图   可更新分区视图   可更新的分区视图规则   可更新的分区视图数据修改规则   分布式分区视图规则   视图使用时机 5、SQL

MySql(3)

走远了吗. 提交于 2020-02-05 19:29:49
索引 理解索引 前缀索引 索引关键字是表中关键字值的一部分 可以是字段值的组合 不可以跨表创建索引 主索引与聚簇索引 将主关键字作为索引。在 MyISAM 中,索引关键字的顺序与表中关键字的顺序不必完全相同,称为 主索引 。在 InnoDB 中,两者顺序必须完全相同,这种索引称为 聚簇索引 索引关键字的选取原则 离散度高 存储空间小 存储空间固定 where 子句经常使用 更新不频繁 最左前缀原则 e . g . 使用有firstname , lastname , address组成的复合索引 ( fname_lname_add ) 就不需要再使用 ( firstname ) , ( firstname , lastname ) , ( firstname , lastname , address ) 前缀索引 索引与约束 对于一个表而言,主键约束(主索引/聚簇索引),唯一性约束(唯一性索引),外键约束(普通索引)是基于索引实现的 创建索引 Mysql还支持全文索引(fulltext),当检索数据量大的字符串信息时,可以使用全文索引。 创建表的同时创建索引 create table table_name ( 字段 1 数据类型 [ 约束条件 ] . 字段 2 数据类型 [ 约束条件 ] . …… [ 其他约束条件 ] , [ 其他约束条件 ] , [ unique |

文件系统

限于喜欢 提交于 2020-02-05 18:59:52
一、文件系统的基本概念 1. 文件系统:一种用于持久性存贮的系统抽象,是操作系统用于明确存储设备或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。操作系统中 负责管理和存储文件信息的软件结构 称为文件系统,简称文件系统。 2. 文件:文件系统中一个单元的相关数据在操作系统中的抽象 3. 文件系统的功能 (1)分配文件磁盘空间 管理文件块(哪一块属于哪一个文件) 管理空闲空间(哪一块是空闲的) 分配算法(策略) (2)管理文件集合 定位文件及其内容 命名:通过名字找到文件的接口 最常见:分层文件系统 文件系统类型(组织文件的不同方式) (3)提供的便利及特征 保护:分层来保护数据安全 可靠性/持久性:保持文件的持久即使发生崩溃、媒体错误、攻击等 4. 文件和块 (1)文件属性 名称、类型、位置、大小、保护、创建者、创建时间、最近修改时间、... (2) 文件头:文件系统元数据中的文件信息 文件属性 文件存储位置和顺序 5. 文件描述符 (1)文件访问模式: 进程访问文件数据前必须先“打开”文件 1 f = open(name, flag); 2 ... 3 read(f,...); 4 ... 5 close(f); (2)内核跟踪进程打开的所有文件 操作系统为每个进程维护一个打开文件表 文件描述符是打开文件的标识 (3)文件描述符:操作系统在 打开文件表 中维护的

Pandas(2)

时间秒杀一切 提交于 2020-02-05 18:56:29
文章目录 数据取值与选择 Series数据选择方法 将Series看作字典 将Series看作一维数组 索引器: loc、 iloc和ix DataFrame数据选择方法 Pandas数值运算方法 通用函数: 保留索引 通用函数: 索引对齐 通用函数: DataFrame与Series的运算 《Python数据科学手册》读书笔记 数据取值与选择 我将从简单的一维 Series 对象开始, 然后再用比较复杂的二维 DataFrame 对象进行演示。 Series数据选择方法 如前所述, Series 对象与一维 NumPy 数组和标准 Python 字典在许多 方面都一样。 只要牢牢记住这两个类比, 就可以帮助我们更好地理解 Series 对象的数据索引与选择模式。 将Series看作字典 和字典一样, Series 对象提供了键值对的映射: import pandas as pd data = pd . Series ( [ 0.25 , 0.5 , 0.75 , 1.0 ] , index = [ 'a' , 'b' , 'c' , 'd' ] ) data a 0.25 b 0.50 c 0.75 d 1.00 dtype: float64 data [ 'b' ] 0.5 还可以用 Python 字典的表达式和方法来检测键 / 索引和值: 'a' in data True

索引

旧街凉风 提交于 2020-02-05 18:54:07
索引的三个特征: 1,索引高度很低 2,索引有序 3,索引存储索引列的值 索引是帮助mysql高效获取数据的排好序的数据结构 索引的数据结构 二叉树 红黑树 Hash表 B-Tree https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 来源: CSDN 作者: Michael_lcf 链接: https://blog.csdn.net/Michael_lcf/article/details/104185009