在SQL中怎样用指定索引查询

在SQL中怎样用指定索引查询,第1张

一般来说在条件中使用索引对应的第一个字段就可能会用到该索引。

微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。

索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。

数据搜索实现角度

索引也是另外一类文件/记录,它包含着可以指示出相关数据记录的各种记录。其中,每一索引都有一个相对应的搜索码,字符段的任意一个子集都能够形成一个搜索码。这样,索引就相当于所有数据目录项的一个集合,它能为既定的搜索码值的所有数据目录项提供定位所需的各种有效支持。

百度百科-数据库索引

mysql一个表可以有多个唯一索引。

如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。

这么做的好处:

一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率。

二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。

也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。

网页链接

聚集索引在每个表内又只能建立一个

聚集索引一定要将聚集索引建立在:

1、最频繁使用的、用以缩小查询范围的字段上;

2、最频繁使用的、需要排序的字段上。

赞成这个说法。

如果真想在你说的列上建立,那就将ID的主键属性去掉。然后再日期上建立。

上期分享中,我们介绍优炫数据库支持的数据存储方式。

戳: 干货分享 优炫数据库支持多业务场景

本期,我们来讲讲优炫数据库支持的多种数据类型

基本数据类型存储与管理

优炫数据库拥有完备的数据类型,内置数据类型包括 数字类型、货币类型、字符类型、日期/时间类型、布尔类型、枚举类型、网络地址类型、位串类型、文本搜索类型等, 支持使用 serial 类型创建表自增列。

通常为了加快指定过滤条件下从表中查询数据的速度,可以为表的某个字段或某几个字段建立索引。数据库对基本数据提供多种索引类型:B-tree、Hash、GIN(倒排序索引)和 BRIN(数据库块范围索引)。每一种索引类型使用了一种不同的算法来适应不同类型的查询。 默认情况下, CREATE INDEX命令创建适合于大部分情况的B-tree索引。

XML/JSON数据类型存储与管理

优炫数据库内置半结构化XML、JSON、JSONB数据类型。

xml数据类型可以被用来存储XML数据,它比直接在一个text域中存储XML数据的优势在于,它会检查输入值的结构是不是良好,并且有支持函数用于在其上执行类型安全的 *** 作。xml类型可以存储结构良好(如XML标准所定义)的“文档”,以及“内容”片段,它们由XML标准所定义,这意味着内容片段中可以有多于一个的顶层元素或字符节点。通过表达式来评估一个特定的xml值是一个完整文档或者仅仅是一个文档片段。

JSON类型强制检查数据有效性,使用专门的 *** 作符和内置函数 *** 作数据,保留空格,重复键和顺序等。JSONB是解析输入后保存的二进制数据,删除了数据中的空格、调整了顺序、优化了存储、保留最后一个重复键值,可被索引。和 JSON 一样,JSONB支持嵌入式的文档和数组。JSONB 由若干个键值对存储为单个实体,这种实体称为文档。 JSONB具有以下几个特性:轻量级(Lightweight),可遍历性(Traversable),高效性(Efficient)。 由于所需存储更小,JSONB通常是首选格式。两者区别在于:JSON类型写快读慢,JSONB类型写慢读快,支持SQL/JSON路径语言。此外,数据库支持对这两类数据的全文检索。

GIS空间类型存储与管理

优炫数据库支持GIS的地理信息应用,支持PostGIS、ArcGIS、超图,支持OpenGIS联盟(开放地理信息系统,OGC)抽象数据类型的SQL3规范,提供对地理矢量数据、3D模型、线性参考数据的组织、存储、空间索引和管理。

Geometry(几何对象类型)是优炫数据库的一个基本存储类型, 空间数据都会以Geometry的形式存储在数据库里,本质是个二进制对象。使用OGC推荐的WKT(Well-Known Text)和WKB(Well-Known Binary)格式进行描述,大幅增加了易用性,WKT与WKB基本数据类型(矢量数据)包括:

l (POINT):例如POINT(0 0);

l 线 (LINESTRING):例如LINESTRING(0 0,1 1,1 2)

l (POLYGON多边形):例如POLYGON((0 0,4 0,4 4,0 4,0 0)) 简单多边形,例如POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) 多边形有一个内部的"孔洞(hole)";

l 多点 (MULTIPOINT):例如MULTIPOINT((0 0),(1 2));

l 多线 (MULTILINESTRING):例如MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4));

l 多面 (MULTIPOLYGON):例如MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)));

l 几何集合 (GEOMETRYCOLLECTION):例如GEOMETRYCOLLECTION(POINT(2 3),LINESTRING(2 3,3 4))。

栅格空间数据类型raster用于表示jpeg,tiff,png,DEM模型这样文件格式的数据。每一个栅格至少有1个波段,每个波段又有一系列像素值,栅格数据是转换成地理坐标的。可以从数据库外部导入已有栅格数据,也可在数据库内创建栅格数据。下面是一个在数据库内部创建栅格数据的示例:

拓扑类型和函数用于管理拓扑结构,比如面、边界和点。

创建一个带有栅格记录的栅格列的表可以用下面的SQL完成:

如果创建的栅格不依赖于其他栅格,那么可以使用函数:

ST_MakeEmptyRaster,接着使用ST_AddBand添加栅格数据。也可以使用geometry对象来创建栅格你需要使用函数ST_AsRaster。可能还需要和其他函数比如函数ST_Union 或函数 ST_MapAlgebraFct 或者其他地图代数系列函数联合使用。甚至还有一些根据一些已经存在的栅格表创建新的栅格表的可选函数。例如可以使用函数ST_Transform 根据一个已有的栅格表在其他投影系中创建一个新的栅格表。然后通过下SQL命令创建一个空间索引:

通过空间索引R-Tree实现空间数据查询和 *** 作,R-Tree将数据分解为矩形(rectangle)、子矩形(sub-rectangle)和子-子矩形(sub-sub rectangle)等。它是一种可自动处理可变数据的密度和对象大小的自调优(self-tuning)索引结构。

图数据存储与管理

图数据以图关系这种数据结构存储,把图数据的顶点和边信息存储到关系型数据类型中,这些信息包括:

l 顶点(Vertices):一个实体一个顶点,一个实体可以有多个属性。

l 边(Edges):两个实体之间的连接线。

l 属性:实体和边都可以有多个属性。形象举个例子,一个实体对应关系表中一行记录,一个实体的属性代表关系表中这行记录的所有字段和值构成的键值对。

在优炫数据库中图数据通过关系型数据进行存储,这些数据与图模型中的数据相对应。例如通过下SQL语句建立存储图数据的表:

然后新增加数据,后续就可以根据这些数据进行图相关的计算和分析了。

时序数据存储与管理

时序数据存储和管理,通过把时序数据存储到关系型数据类型中。时序数据是指时间序列数据。时间序列数据是同一统一指标按时间顺序记录的数据列。在同一数据列中的各个数据必须是同口径的,要求具有可比性。时序数据可以是时期数,也可以时点数。时间序列分析的目的是通过找出样本内时间序列的统计特性和发展规律性,构建时间序列模型,进行样本外预测。

文档//视频类型存储与管理

优炫数据库可存储任意未知具体内容的、声音、视频等非结构化数据,支持 GB 级大对象数据类型与流式数据访问。可借助于数据库图形化管理工具、应用程序、第三方工具等查看这些非结构化数据。根据业务需要也可借助数据库插件读取或识别这些非结构化数据的内容用于数据分析。

优炫数据库支持多种二进制数据类型,包括:Bytea、OID、Blob、raw、Varbinary、Longvarbinary。

自定义数据类型存储与管理

优炫数据库可自定义数据类型、索引、函数等数据库对象。 新增加的数据类型可以是新数据类型,也可以是已知几个数据类型的复合数据类型。

模分析型数据库用户可在数据库中使用CREATE TYPE或CREATE DOMAIN命令增加新的数据类型;可通过自定义函数或存储过程对数据进行各种处理。

CREATE TYPE在当前数据库中注册一种新的数据类型,定义数据类型的用户将成为它的拥有者。五种形式的CREATE TYPE,它们分别创建组合类型、枚举类型、 范围类型、基础类型或者 shell 类型。shell 类型仅仅是一种用于后面要定义的类型的占位符,通过发出一个不带除类型名之外其他参数的CREATE TYPE命令可以创建这种类型。在创建范围类型和基础类型时,需要 shell 类型作为一种向前引用。

CREATE DOMAIN创建一个新的域。 域本质上是一种带有可选约束(在允许的值集合上的限制)的数据类型。域主要被用于把字段上的常用约束抽象到一个单一的位置以便维护。例如,几个表可能都包含电子邮件地址列,而且都要求相同的 CHECK 约束来验证地址的语法。可以为此定义一个域,而不是在每个表上都单独设置一个约束。

主键只有一个,但是可以设置为多个字段为主键,也即联合主键。外键就是自己设置了也即可以有多个,可以设置除主键以外的其他字段全部是外键的。

数据库的每张表只能有一个主键,不可能有多个主键。所谓的一张表多个主键,我们称之为联合主键。联合主键就是用多个字段一起作为一张表的主键。主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

扩展资料:

一、数据库模型:

1、对象模型

2、层次模型(轻量级数据访问协议)

3、网状模型(大型数据储存)

4、关系模型

5、面向对象模型

6、半结构化模型

7、平面模型(表格模型,一般在形式上是一个二维数组。如表格模型数据Excel)

二、数据库的架构:

数据库的架构可以大致区分为三个概括层次:内层、概念层和外层。

1、内层:最接近实际存储体,亦即有关数据的实际存储方式。

2、外层:最接近用户,即有关个别用户观看数据的方式。

3、概念层:介于两者之间的间接层。

三、数据库索引:

索引跟字段有着相应的关系,索引即是由字段而来,其中字段有所谓的关键字段(Key

Field),该字段具有唯一性,即其值不可重复,且不可为“空值(null)"。例如:在合并数据时,索引便是扮演欲附加字段数据之指向性用途的角色。故此索引为不可重复性且不可为空。

参考资料:

搜狗百科-数据库

唯一索引:唯一索引不允许两行具有相同的索引值

• 主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空

• 聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个

• 非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。可以有多个,小于249个

索引类型:再次用汉语字典打比方,希望大家能够明白聚集索引和非聚集索引这两个概念。

以上就是关于在SQL中怎样用指定索引查询全部的内容,包括:在SQL中怎样用指定索引查询、mysql一个表可以有几个唯一索引、关于Sqlserver索引的问题。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9743342.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存