索引

lucene 学习之基础篇

纵饮孤独 提交于 2020-02-13 23:53:08
一、什么是全文索引 全文检索首先将要查询的目标文档中的词提取出来,组册索引(类似书的目录),通过查询索引达到搜索目标文档的目的,这种先建立索引,再对索引进行搜索的过程就叫全文索引。 从图可以看出做全文搜索的步骤: 1、对目标数据源中提取相应的词建立索引 2、通过检索索引(检索索引中的词),从而找到目标文件即源数据。 现在的全文检索不仅能对字符串进行匹配,而是已经发展到可以对大文本、语言、图像、活动影像等非结构化数据进行综合管理的发、大型软件。 二、lucene 百度百科 Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个 开放源代码 的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分 文本分析 引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。 Lucene 是一套用于 全文检索 和搜寻的开源程式库,由 Apache 软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费 开源 工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库

从原理到优化,深入浅出数据库索引

半世苍凉 提交于 2020-02-13 23:44:06
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 数据库查询是数据库的最主要功能之一,我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化,这篇文章对索引做一个系统的梳理,希望对大家有帮助。 一、MySQL有哪些索引类型 索引的分类可以从多个角度进行,下面分别从数据结构,物理存储和业务逻辑三个维度进行划分。 1、从数据结构角度 (1)B+树索引(O(log(n))) 关于B+树索引,后面会深入解析 (2)hash索引 仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询 其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引 只有Memory存储引擎显示支持hash索引 (3)FULLTEXT索引 现在MyISAM和InnoDB引擎都支持了 (4)R-Tree索引 用于对GIS数据类型创建SPATIAL索引 2、从物理存储角度 (1)聚集索引(clustered index) 正文内容按照一个特定维度排序存储,这个特定的维度就是聚集索引; Innodb存储引擎中行记录就是按照聚集索引维度顺序存储的,Innodb的表也称为索引表;因为行记录只能按照一个维度进行排序

存储过程编写经验和优化措施

半腔热情 提交于 2020-02-13 23:24:18
在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。如果项目的SP较多,书写又没有一定的规范,将会影响以后的系统维护困难和大SP逻辑的难以理解,另外如果数据库的数据量大或者项目对SP的性能要求很,就会遇到优化的问题,否则速度有可能很慢,经过亲身经验,一个经过优化过的SP要比一个性能差的SP的效率甚至高几百倍。 内容: 1、开发人员如果用到其他库的Table或View,务必在当前库中建立View来实现跨库操作,最好不要直接使用“databse.dbo.table_name”,因为sp_depends不能显示出该SP所使用的跨库table或view,不方便校验。 2、开发人员在提交SP前,必须已经使用set showplan on分析过查询计划,做过自身的查询优化检查。 3、高程序运行效率,优化应用程序,在SP编写过程中应该注意以下几点: a) SQL的使用规范: i. 尽量避免大事务操作,慎用holdlock子句,提高系统并发能力。 ii. 尽量避免反复访问同一张或几张表,尤其是数据量较大的表,可以考虑先根据条件提取数据到临时表中,然后再做连接。 iii.尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该改写;如果使用了游标,就要尽量避免在游标循环中再进行表连接的操作。 iv. 注意where字句写法

MySQL开发规范与使用技巧总结

为君一笑 提交于 2020-02-13 20:23:52
1.命名规范 1.库名、表名、字段名必须使用小写字母,并采用下划线分割。 a)MySQL有配置参数lower_case_table_names,不可动态更改,linux系统默认为 0,即库表名以实际情况存储,大小写敏感。如果是1,以小写存储,大小写不敏感。如果是2,以实际情况存储,但以小写比较。 b)如果大小写混合使用,可能存在abc,Abc,ABC等多个表共存,容易导致混乱。 c)字段名显示区分大小写,但实际使⽤用不区分,即不可以建立两个名字一样但大小写不一样的字段。 d)为了统一规范, 库名、表名、字段名使用小写字母。 2.库名、表名、字段名禁止超过32个字符。 库名、表名、字段名支持最多64个字符,但为了统一规范、易于辨识以及减少传输量,禁止超过32个字符。 3.使用INNODB存储引擎。 INNODB引擎是MySQL5.5版本以后的默认引擘,支持事务、行级锁,有更好的数据恢复能力、更好的并发性能,同时对多核、大内存、SSD等硬件支持更好,支持数据热备份等,因此INNODB相比MyISAM有明显优势。 4.库名、表名、字段名禁止使用MySQL保留字。 当库名、表名、字段名等属性含有保留字时,SQL语句必须用反引号引用属性名称,这将使得SQL语句书写、SHELL脚本中变量的转义等变得⾮非常复杂。 5.禁止使用分区表。 分区表对分区键有严格要求;分区表在表变大后,执⾏行DDL

MySQL_MySQL俩表索引优化实例

廉价感情. 提交于 2020-02-13 17:38:13
1.引入 我们呢,在上一节课的时候优化了一张单一的数据库表。那么接下来呢。我们一起优化一下俩张数据库表的索引。 2.创建操作的数据库 创建用户表:admin,并添加数据 -- ---------------------------- -- Table structure for admin -- ---------------------------- DROP TABLE IF EXISTS `admin`; CREATE TABLE `admin` ( `id` int(11) NOT NULL AUTO_INCREMENT, `adminname` varchar(255) NOT NULL, `realname` varchar(255) DEFAULT NULL, `adminpassword` varchar(255) NOT NULL, `adminEmail` varchar(255) DEFAULT NULL, `adminNote` varchar(255) DEFAULT NULL, `role_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_adname_relname` (`adminname`,`realname`) ) ENGINE=InnoDB AUTO_INCREMENT=3

java实现DynamoDB创表[全局索引]

你离开我真会死。 提交于 2020-02-13 17:31:31
什么是Amazon DynamoDB? Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务。 Amazon DynamoDB有哪些核心组件? Amazon DynamoDB的核心组件有三个:表(Table)、项目(Item)、属性(Attribute)。 Table、Item、Attribute组件之间有什么关系? 举个栗子:结合你使用的关系型数据库进行理解,Table指的表就不用说了,Item相当于表中的一个对象(一行数据),Attribute就是对象的每个属性(每一列)。 总的来说就是:item是attribute的集合,table是item的集合。 创表时需要设置主键,唯一标识每一个项目,同时可设置多个排序键以及本地索引和全局二级索引。 欲知更多,请疯狂点击访问官网: Amazon DynamoDB官方文档 以下是创表的具体实现:SpringBoot采用2.2.3版本。 一、 Maven依赖 <dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.11.710</version> <type>pom</type> <scope>import

IntelliJ IDEA使用教程(简介)

試著忘記壹切 提交于 2020-02-13 15:49:40
最智能的IDE IDEA 全称IntelliJ IDEA 是 java语言 开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、 J2EE 支持、 Ant 、 JUnit 、 CVS 整合、代码审查、 创新的 GUI设计 等方面的功能可以说是超常的。 IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。 目前,该软件有两个主要的版本:免费的社区版和付费的旗舰版。免费版只支持Java等少数语言和基本的IDE特性; 旗舰版还支持HTML,CSS,PHP,MySQL,Python等语言和更多的工具特性。 下载地址:https://www.jetbrains.com/idea/download/#section=mac (本人系统为mac) 为什么选择IDEA 主流 虽然IDEA的主要客户是基于JVM开发的人员,但是IDEA支持的语言/平台可以认为是无限的。IDEA像其他的伟大IDE一样, 采用了基于插件的架构,为了使IDEA支持一些没有原生集成的语言/平台,只需实现或者查找对应的插件并按照到IDEA中即可。 关于IDEA支持的主流语言和平台,做一个简单的总结: ​ 快捷 虽然IDEA不是唯一一个,也不是第一个支持快捷键的IDE工具

2014年小结之sql语句优化

混江龙づ霸主 提交于 2020-02-13 09:04:33
之前接手一个数据统计处理的小程序,本来逻辑上并没什么,只是数据量略大,某些表的数据达到了千万级别..因为是统计,所以免不了各种连接各种查询,结果这个小程序写完后运行一次要1个小时..这的确有点出乎意料,所以着手优化一下.. 1.添加索引 平时不注意或是数据量比较小的时候可能会忽略这个,加或是不加基本没差别,但是当数据量很大的时候差别就非常明显,没有索引的情况下,在1万条以内和10万条以上的数据中查询所用的时间差别已经能分辨出了.这里有2点需要特别注意: 1)默认情况下我们创建表,数据库会自动给我们添加一个默认索引,但是当采用 create table 表名 as select 语句创建表时,数据库是不会自动创建索引的,此时我们需要手动添加索引. 2)哪些字段需要添加索引?那些在我们查询语句中起到桥梁(连接)作用的字段需要添加索引.因为只有在查询条件中包含有索引字段才能享用索引带来的速度提升. 可以说索引是提高查询速度最明显最简单的方法,它可以令一个数分钟的查询在毫秒内完成,效率提升不是一点半点.. 2.缩小查询集合 既然是查询,那一定有要查询的集合,也就是 from 后面的集合.如果能缩小这个集合,那么查询遍历一遍的时间也会缩减不少,整体的查询时间自然会减少.主要有几个手段: 1)创建临时查询表.如果一个表的数据量很大,而我们只在其中满足某些特定条件的数据集合中查询

数组(Array)——数组介绍

Deadly 提交于 2020-02-13 03:36:03
Arrays(数组) 数组是一个固定长度的存储相同数据类型的数据结构,数组中的元素被存储在一段连续的内存空间中。它是最简单的数据结构之一,大多数现代编程语言都内置数组支持。 为何使用数组存储一堆变量 与单独为每一个元素声明一个变量名相比,我们可以使用数组的索引值访问数组中的每一个元素。 例如:我们需要实现一个系统来存储办公室所有员工的年龄,传统的存储方式如下: 我们为办公室的每一个员工创建一个变量。假设办公室由三个员工,只需声明三个变量:empl_age,emp2_age和emp3_age. 当我们新招募员工进来时,我们需要创建更多的变量来存储员工的年龄。维护这样的系统非常麻烦,每添加一个新的员工,我们就需要修改这个系统的代码。 要人工计算超过20个员工的平均年龄,逐一访问每一个变量让人头痛的。 数组数据结构的出现尝试解决这种问题。数组的特性之一就是,以一个名称保存多个相同数据类型的数据。 在这个例子中,我们可以声明一个名为employees_ages的整型数组来保存所有员工的年龄。 数组的第二个特性就是,数组中的每一个数据元素被存储在一段连续的内存空间中,我们可以以索引的方式访问数组的数据元素。 通过遍历数组的索引来访问每个员工的年龄,使得计算员工年龄的平均值变得更加容易;因为在遍历过程中,数组的名称是恒定的,只有索引在变化。 声明一个一维数组 在使用一个数组之前

mysql 索引的理解-针对面试

风格不统一 提交于 2020-02-12 22:55:07
innodb 索引 索引是一颗B+tree(多路平衡查询树)。 B-tree 与B+tree区别 B-tree 每个节点从小到大排序。 每个节点指向下游节点。 每个节点对应data。可以理解为mysql 表一行记录。 B+tree 非叶子节点仅存储索引,不存储data。 叶子节点存储索引,与数据。 每一个父节点都会出现在子节点上。 mysql 对B+tree 进行了优化,每一个叶子节点都带有指向下一个叶子节点的指针。 聚簇索引与非聚簇索引 聚簇索引叶子节点指向data 聚簇索引叶子节点指向主键 来源: CSDN 作者: jiguansheng 链接: https://blog.csdn.net/jiguansheng/article/details/104271020