索引

cscope的使用

谁都会走 提交于 2020-02-15 17:39:12
转自:http://easwy.com/blog/archives/advanced-vim-skills-cscope/ 本节所用命令的帮助入口: :help cscope 在前面的文章中介绍了 利用tag文件 ,跳转到标签定义的地方。但如果想查找函数在哪里被调用,或者标签在哪些地方出现过,ctags就无能为力了,这时需要使用更为强大的cscope。 Cscope具有纯正的Unix血统,它最早是由贝尔实验室为PDP-11计算机开发的,后来成为商用的AT&T Unix发行版的组成部分。直到2000年4月,这个工具才由SCO公司以BSD license开源发行。 Cscope的主页在 http://cscope.sourceforge.net/ ,如果你的计算机上没有cscope,你可以在此处下载它,在写本文时,它的最新版本是15.6。安装它非常简单,你只需要在cscope的源代码目录中执行下面三条命令: ./configure make make install 在windows上也可以使用cscope,在cscope的主页上可以下载到由DJGPP编译器编译的cscope for windows,不过这个版本不能和vi一起工作。或者你可以下载cygwin工具包( http://www.cygwin.com/ ),这个工具包中也包含了cscope。 在 http://iamphet

【MongoDB】索引

一世执手 提交于 2020-02-15 15:45:41
目录 1.索引简介 2.索引种类 2.1 单一字段索引 2.2 字段值唯一索引 2.3 多字段索引 2.4 文本索引 2.5 哈希索引 2.6 ensureIndex()索引 3.与索引相关的其他方法 1.索引简介 MongoDB是基于集合建立索引(index),建立索引的目的是为了提高查询速度。MongoDB的索引基于B-tree数结构及对应算法形成的。 默认情况下,在建立集合的同时,MongoDB数据库自动为 集合_id建立唯一索引 ,可以避免重复插入同一_id值的文档记录。 2.索引种类 2.1 单一字段索引 语法:db.collection_name.createIndex({ : }) 说明:对一个集合文档的键建立索引,key为键名,n=1为升序,n=-1为降序 示例: // 插入记录 db.bookInfo.insert( { _id:100, title:"书单1", amount:120, unit:"RMB", detail:[ {name:"西游记",price:98}, {name:"三国演义",price:120} ], overview:{shopName:"当当网",shopNum:37} } ) // 为name建立索引 db.custInfo.createIndex( { title:1 //正序 } ) // 嵌套文档建立索引 db

MySQL 索引学习笔记

只谈情不闲聊 提交于 2020-02-15 11:54:33
该文为《 MySQL 实战 45 讲》的学习笔记,感谢查看,如有错误,欢迎指正 一、索引简介 索引就类似书本的目录,作用就是方便我们更加快速的查找到想要的数据。 索引的实现方式比较多,常见的有 哈希表 , 有序数组 , 搜索树 。 1.1 哈希表 哈希表 是将数据以 key-value 的形式存储起来,简单来说就是将 key 通过哈希函数换算成数组中的一个确定的位置,将 value 存到这个位置去。当 key 比较多时,有可能换算出相同的位置,此时可以通过链表来解决。在查询时先找到位置,再对该位置的多个 value 进行遍历。 哈希表适合用于等值查询 ,由于是无序的,不适合用来做区间查询。 1.2 有序数组 有序数组 在等值查询和区间查询上效率都很高。由于是有序的,可以通过二分法快速得到结果。也支持范围查询。但是也有一个缺点,如果要在中间插入一个数据,那么后面的所有记录都要向后挪一位,成本太高了。 因此, 有序数组只适用于静态存储引擎 。 例如我们要保存2019年的出生人口信息,就适合用有序数组。 1.3 搜索树 常见的搜索树有 二叉 ,也有 多叉 。 二叉树 的特点是: 每个节点的左儿子小于父节点,父节点又小于右儿子。 多叉树 的特点是: 每个节点有多个儿子,儿子之间的大小保证从左到右递增。 由于索引不止存在内存中,还会写到磁盘上,而读磁盘越多,查询效率越慢

oracle提高查询效率的34条方法

帅比萌擦擦* 提交于 2020-02-15 09:36:04
oracle提高查询效率的34条方法 1、选择最有效率的表名顺序   (只在基于规则的优化器中有效):   ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. 2、WHERE子句中的连接顺序   ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 3、SELECT子句中避免使用 " * "   ORACLE在解析的过程中, 会将"*" 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间 4、减少访问数据库的次数   ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等; 5、在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数   可以增加每次数据库访问的检索数据量 ,建议值为200 6、使用DECODE函数来减少处理时间  

JAVA——一维数组

南笙酒味 提交于 2020-02-15 08:54:55
数组 一、数组的概念 数组是存储同一种数据类型多个元素的集合,也可以看成是一个容器。 数组既可以存储基本数据类型,也可以存储引用数据类型。 二、数组的定义格式 格式1:数据类型 [ ] 数组名; 格式2:数据类型 数组名 [ ]; 三、数组初始化概述 Java中的数组必须先初始化,然后才能使用。 所谓初始化就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。 四、数组初始化的方式 1.动态初始化(初始化时只指定数组的长度,由系统为数组分配初始值) 格式: 数据类型 [ ] 数组名 = new 数据类型 [ 数组长度 ]; 数组名 [ 索引 ] 获取数组中的指定元素(索引从0开始,最大索引是数组的长度 - 1) 2.静态初始化(初始化时指定每个数组元素的初始值,由系统决定数组长度) 格式:数据类型 数组名 [ ] = new 数据类型 [ ] {元素1,元素2,…}; 简化:数据类型 数组名 [ ] = {元素1,元素2,…}; 五、常见问题 1.数组索引越界 ArrayIndexOutOfBoundsException 访问到了数组中的不存在的索引时发生 2.空指针异常 NullpointerException 数组引用没有指向实体,却在操作实体中的元素时 六、数组遍历 public class ArrayDemo1 { public static void main (

cscope的用法

拜拜、爱过 提交于 2020-02-15 06:22:39
一,一般源文件中生成索引文件 为了方便使用,编写了下面的脚本来更新cscope和ctags的索引文件: #!/bin/shfind . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.filescscope -bkq -i cscope.filesctags -R 这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。 其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。 这个脚本,首先使用find命令,查找当前目录及子目录中所有后缀名为".h", ".c"和".c"的文件,并把查找结果重定向到文件cscope.files中。然后cscope根据cscope.files中的所有文件,生成符号索引文件。最后一条命令使用ctags命令,生成一个tags文件,在vim中执行":help tags"命令查询它的用法。它可以和cscope一起使用。上面所用到的命令参数,含义如下: -R : 在生成索引文件时,搜索子目录树中的代码 -b : 只生成索引文件,不进入cscope的界面 -q : 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度 -k: 在生成索引文件时,不搜索/usr

vim+cscope的使用

时光总嘲笑我的痴心妄想 提交于 2020-02-14 23:11:55
1. vim的准备 首 先 vim --version | grep cscope,看看vim是否支持cscope,如果不支持需要重新安装vim。最简单的是在. /configure 后加上-enable-cscope,当然可以在Makefile文件(./src/Makefile)中修改(把原来的注释去 掉),这是最根本的: CONF_OPT_CSCOPE = --enable-cscope 然后安装:make && make install 2. 在目录下建立cscope索引文件 为了方便使用,编写了下面的脚本来更新cscope和ctags的索引文件: #!/bin/sh find . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files cscope -bkq -i cscope.files ctags -R 这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。 其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。 这个脚本,首先使用find命令,查找当前目录及子目录中所有后缀名为".h", ".c"和".c"的文件,并把查找结果重定向到文件cscope.files中。 然后cscope根据cscope

数仓即席查询--Druid

喜夏-厌秋 提交于 2020-02-14 20:17:25
Druid简介 Druid是一个快速的列式分布式的支持实时分析的数据存储系统;它在处理PB级数据,毫秒级查询,数据实时处理方面,比传统的OLAP系统有了显著的性能改进 官网: http://druid.io/ ps:阿里巴巴也有一个项目叫Druid,但是它是一个数据库连接池项目 Druid特点 1.列式存储格式 Druid使用面向列的存储,它只需要加载特定查询所需的列,查询速度快 2.可扩展的分布式系统 Druid通常部署在数十到数百台服务器的集群中,并且提供数百万条/秒的摄取率,保留数百万条记录,以及压秒级到几秒钟的查询延迟 3.大规模的并行处理 Druid可以再整个集群中进行大规模的并行查询 4.实时或批量摄取 Druid可以实时摄取数据(实时获取的数据可立即用于查询)或批量处理数据 5.自愈,自平衡,易操作 集群扩展和缩小,只需要添加或删除服务器,集群将在后台自动重新平衡,无需任何停机时间 6.数据进行了有效的预聚合或预计算,查询速度快 7.数据的结果应用了Bitmap压缩算法 Druid应用场景 1.适用于清洗好的记录实时录入,但不需要更新操作 2.适用于支持宽表,不用join的方式(也就是一张单表) 3.适用于可以总结出基础的统计指标,用一个字段表示 4.适用于实时性要求高的场景 5.适用于对数据质量的敏感度不高的场景 Druid对比Impala/Presto/Spark

Oracle学习笔记(十)分区索引失效的思考

允我心安 提交于 2020-02-14 17:11:34
此处只说索引失效的场景(只会影响全局索引): 结论:全局索引truncate 分区和交换分区都会导致索引失效果 局部索引truncate分区不会导致索引失效。 drop table part_tab_trunc purge; create table part_tab_trunc (id int,col2 int,col3 int,contents varchar2(4000)) partition by range (id) ( partition p1 values less than (10000), partition p2 values less than (20000), partition p3 values less than (maxvalue) ) ; insert into part_tab_trunc select rownum ,rownum+1,rownum+2, rpad('*',400,'*') from dual connect by rownum <=50000; commit; create index idx_part_trunc_col2 on part_tab_trunc(col2) local; create index idx_part_trunc_col3 on part_tab_trunc(col3) ; --

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

孤街醉人 提交于 2020-02-14 12:27:43
一、介绍: 在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用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万行,那么就应该改写;如果使用了游标