资料库索引是啥意思 干啥 请说的通俗一点 谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了资料库索引是啥意思 干啥 请说的通俗一点 谢谢相关的知识,希望对你有一定的参考价值。

参考技术A

资料库索引是什么意思 干什么 请说的通俗一点 谢谢

给栏位建立索引就是告诉资料库说,这个栏位我以后可能会经常查询,我需要快点找到我所需的记录。
于是乎,资料库拿来一个小本,专门给这栏位按某种规则来来排序,并可能是先划分若干个区间,方便具体的查询定位。因为这种要求,资料库的插入,删除等操作都有可能需要更新索引。
--这是我的理解。

sqlserver资料库索引有个钥匙标志是什么意思

SQL的主键和外来键的作用:
外来键取值规则:空值或参照的主键值。
(1)插入非空值时,如果主键表中没有这个值,则不能插入。
(2)更新时,不能改为主键表中没有的值。
(3)删除主键表记录时,你可以在建外来键时选定外来键记录一起级联删除还是拒绝删除。
(4)更新主键记录时,同样有级联更新和拒绝执行的选择。
简而言之,SQL的主键和外来键就是起约束作用。

什么是资料库索引?

第二次回答:
问题补充:能不能具体点,新建一个索引就可以了吗
基本上可以这么说,不过你也可以修改索引。
记住:
索引其实关键目的是为了加快检索速度而建立的,所以,怎么用索引是资料库系统本身的事情,作为资料库设计或使用者,设计并建立好索引然后体验加上索引后的查询变快的感觉就行了。所以,索引怎么用就变为了“怎么建立合适的索引”
以下回答是否符合你的要求?你还有什么问题?
第一次回答:
一、索引是什么
索引是与表或检视关联的磁碟上结构,可以加快从表或检视中检索行的速度。索引包含由表或检视中的一列或多列生成的键。这些键储存在一个结构(B 树)中,使 SQL Server 可以快速有效地查询与键值关联的行。
表或检视可以包含以下型别的索引:
* 聚集
o 聚集索引根据资料行的键值在表或检视中排序和储存这些资料行。索引定义中包含聚集索引列。每个表只能有一个聚集索引,因为资料行本身只能按一个顺序排序。
o 只有当表包含聚集索引时,表中的资料行才按排序顺序储存。如果表具有聚集索引,则该表称为聚集表。如果表没有聚集索引,则其资料行储存在一个称为堆的无序结构中。
* 非聚集
o 非聚集索引具有独立于资料行的结构。非聚集索引包含非聚集索引键值,并且每个键值项都有指向包含该键值的资料行的指标。
o 从非聚集索引中的索引行指向资料行的指标称为行定位器。行定位器的结构取决于资料页是储存在堆中还是聚集表中。对于堆,行定位器是指向行的指标。对于聚集表,行定位器是聚集索引键。
o 您可以向非聚集索引的叶级新增非键列以跳过现有的索引键限制(900 位元组和 16 键列),并执行完整范围内的索引查询。
聚集索引和非聚集索引都可以是唯一的。这意味着任何两行都不能有相同的索引键值。另外,索引也可以不是唯一的,即多行可以共享同一键值。
每当修改了表资料后,都会自动维护表或检视的索引。
索引和约束
对表列定义了 PRIMARY KEY 约束和 UNIQUE 约束时,会自动建立索引。例如,如果建立了表并将一个特定列标识为主键,则 资料库引擎自动对该列建立 PRIMARY KEY 约束和索引。有关详细资讯,请参阅建立索引(资料库引擎)。
二、索引有什么用
与书中的索引一样,资料库中的索引使您可以快速找到表或索引检视中的特定资讯。索引包含从表或检视中一个或多个列生成的键,以及对映到指定资料的储存位置的指标。通过建立设计良好的索引以支援查询,可以显著提高资料库查询和应用程式的效能。索引可以减少为返回查询结果集而必须读取的资料量。索引还可以强制表中的行具有唯一性,从而确保表资料的资料完整性。
设计良好的索引可以减少磁碟 I/O 操作,并且消耗的系统资源也较少,从而可以提高查询效能。对于包含 SELECT、UPDATE、DELETE 或 MERGE 语句的各种查询,索引会很有用。例如,在 AdventureWorks 资料库中执行的查询 SELECT Title, HireDate FROM HumanResources.Employee WHERE EmployeeID = 250。执行此查询时,查询优化器评估可用于检索资料的每个方法,然后选择最有效的方法。可能采用的方法包括扫描表和扫描一个或多个索引(如果有)。
扫描表时,查询优化器读取表中的所有行,并提取满足查询条件的行。扫描表会有许多磁碟 I/O 操作,并占用大量资源。但是,如果查询的结果集是占表中较高百分比的行,扫描表会是最为有效的方法。
查询优化器使用索引时,搜寻索引键列,查询到查询所需行的储存位置,然后从该位置提取匹配行。通常,搜寻索引比搜寻表要快很多,因为索引与表不同,一般每行包含的列非常少,且行遵循排序顺序。
查询优化器在执行查询时通常会选择最有效的方法。但如果没有索引,则查询优化器必须扫描表。您的任务是设计并建立最适合您的环境的索引,以便查询优化器可以从多个有效的索引中选择。SQL Server 提供的资料库引擎优化顾问可以帮助分析资料库环境并选择适当的索引。
三、索引怎么用
索引其实关键目的是为了加快检索速度而建立的,所以,怎么用索引是资料库系统本身的事情,作为资料库设计或使用者,设计并建立好索引然后体验加上索引后的查询变快的感觉就行了。所以,索引怎么用就变为了“怎么建立合适的索引”,以下说明这个问题:
索引设计不佳和缺少索引是提高资料库和应用程式效能的主要障碍。设计高效的索引对于获得良好的资料库和应用程式效能极为重要。为资料库及其工作负荷选择正确的索引是一项需要在查询速度与更新所需开销之间取得平衡的复杂任务。如果索引较窄,或者说索引关键字中只有很少的几列,则需要的磁碟空间和维护开销都较少。而另一方面,宽索引可覆盖更多的查询。您可能需要试验若干不同的设计,才能找到最有效的索引。可以新增、修改和删除索引而不影响资料库架构或应用程式设计。因此,应试验多个不同的索引而无需犹豫。
SQL Server 中的查询优化器可在大多数情况下可靠地选择最高效的索引。总体索引设计策略应为查询优化器提供可供选择的多个索引,并依赖查询优化器做出正确的决定。这在多种情况下可减少分析时间并获得良好的效能。若要检视查询优化器对特定查询使用的索引,请在 SQL Server Management Studio 中的“查询”选单上选择“包括实际的执行计划”。
不要总是将索引的使用等同于良好的效能,或者将良好的效能等同于索引的高效使用。如果只要使用索引就能获得最佳效能,那查询优化器的工作就简单了。但事实上,不正确的索引选择并不能获得最佳效能。因此,查询优化器的任务是只在索引或索引组合能提高效能时才选择它,而在索引检索有碍效能时则避免使用它。
建议的索引设计策略包括以下任务:
1. 了解资料库本身的特征。例如,它是频繁修改资料的联机事务处理 (OLTP) 资料库,还是主要包含只读资料的决策支援系统 (DSS) 或资料仓库 (OLAP) 资料库?
2. 了解最常用的查询的特征。例如,了解到最常用的查询联接两个或多个表将有助于决定要使用的最佳索引型别。
3. 了解查询中使用的列的特征。例如,某个索引对于含有整数资料型别同时还是唯一的或非空的列是理想索引。筛选索引适用于具有定义完善的资料子集的列。
4. 确定哪些索引选项可在建立或维护索引时提高效能。例如,对现有某个大型表建立聚集索引将会受益于 ONLINE 索引选项。ONLINE 选项允许在建立索引或重新生成索引时继续对基础资料执行并发活动。
5. 确定索引的最佳储存位置。非聚集索引可以与基础表储存在同一个档案组中,也可以储存在不同的档案组中。索引的储存位置可通过提高磁碟 I/O 效能来提高查询效能。例如,将非聚集索引储存在表文件组所在磁碟以外的某个磁碟上的一个档案组中可以提高效能,因为可以同时读取多个磁碟。
或者,聚集索引和非聚集索引也可以使用跨越多个档案组的分割槽方案。在维护整个集合的完整性时,使用分割槽可以快速而有效地访问或管理资料子集,从而使大型表或索引更易于管理。有关详细资讯,请参阅已分割槽表和已分割槽索引。在考虑分割槽时,应确定是否应对齐索引,即,是按实质上与表相同的方式进行分割槽,还是单独分割槽。
# 设计索引。
索引设计是一项关键任务。索引设计包括确定要使用的列,选择索引型别(例如聚集或非聚集),选择适当的索引选项,以及确定档案组或分割槽方案布置。
# 确定最佳的建立方法。按照以下方法建立索引:
* 使用 CREATE TABLE 或 ALTER TABLE 对列定义 PRIMARY KEY 或 UNIQUE 约束
SQL Server 资料库引擎自动建立唯一索引来强制 PRIMARY KEY 或 UNIQUE 约束的唯一性要求。预设情况下,建立的唯一聚集索引可以强制 PRIMARY KEY 约束,除非表中已存在聚集索引或指定了唯一的非聚集索引。预设情况下,建立的唯一非聚集索引可以强制 UNIQUE 约束,除非已明确指定唯一的聚集索引且表中不存在聚集索引。
还可以指定索引选项和索引位置、档案组或分割槽方案。
建立为 PRIMARY KEY 或 UNIQUE 约束的一部分的索引将自动给定与约束名称相同的名称。
* 使用 CREATE INDEX 语句或 SQL Server Management Studio 物件资源管理器中的“新建索引”对话方块建立独立于约束的索引
必须指定索引的名称、表以及应用该索引的列。还可以指定索引选项和索引位置、档案组或分割槽方案。预设情况下,如果未指定聚集或唯一选项,将建立非聚集的非唯一索引。若要建立筛选索引,请使用可选的 WHERE 子句。
# 建立索引。
要考虑的一个重要因素是对空表还是对包含资料的表建立索引。对空表建立索引在建立索引时不会对效能产生任何影响,而向表中新增资料时,会对效能产生影响。
对大型表建立索引时应仔细计划,这样才不会影响资料库效能。对大型表建立索引的首选方法是先建立聚集索引,然后建立任何非聚集索引。在对现有表建立索引时,请考虑将 ONLINE 选项设定为 ON。该选项设定为 ON 时,将不持有长期表锁以继续对基础表的查询或更新。
简单的建立索引,可采用如下语句:
CREATE INDEX IX_ProductVendor_VendorID
ON Purchasing.ProductVendor (VendorID, VendorName);
GO

什么是资料库索引,索引有什么作用

资料库索引是为了增加查询速度而对表栏位附加的一种标识。见过很多人机械的理解索引的概念,认为增加索引只有好处没有坏处。这里想把之前的索引学习笔记总结一下: 首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,预设的方式是根据搜寻条件进行全表扫描,遇到匹配条件的就加入搜寻结果集合。如果我们对某一栏位增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度

资料库索引优缺点

建立索引可以大大提高系统的效能:
第一,通过建立唯一性索引,可以保证资料库表中每一行资料的唯一性。
第二,可以大大加快资料的检索速度,这也是建立索引的最主要的原因。
第三,可以加速表和表之间的连线,特别是在实现资料的参考完整性方面特别有意义。
第四,在使用分组和排序 子句进行资料检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的效能。
增加索引也有许多不利的方面:
第一,建立索引和维护索引要耗费时间,这种时间随着资料量的增加而增加。
第二,索引需要占物理空间,除了资料表占资料空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
第三,当对表中的资料进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了资料的维护速度。
索引是建立在资料库表中的某些列的上面。因此,在建立索引的时候,应该仔细考虑在哪些列上可以建立索引,在哪些列上不能建立索引。一般来说,应该在这些列上建立索引,例如:
在经常需要搜寻的列上,可以加快搜索的速度;
在作为主键的列上,强制该列的唯一性和组织表中资料的排列结构;
在经常用在连线的列上,这 些列主要是一些外来键,可以加快连线的速度;
在经常需要根据范围进行搜寻的列上建立索引,因为索引已经排序,其指定的范围是连续的;
在经常需要排序的列上创 建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;
在经常使用在WHERE子句中的列上面建立索引,加快条件的判断速度。

通俗易懂的解释何为资料库索引

program lt;
const
filein=\'E:\\lt.in\';
fileout=\'E:\\lt.out\';
var fin,fout:text;
procedure init;
begin
assign(fin,filein);reset(fin);
assign(fout,fileout);rewrite(fout);
for i:=1 to 5 do
begin
read(fin,e[i],a[i],b[i]);readln(fin,c[i]);
d[i]:=a[i]+b[i]+c[i];
end;
end;
procedure t;
begin

资料库索引是什么,有什么优点和缺点

建立索引可以大大提高系统的效能:
第一,通过建立唯一性索引,可以保证资料库表中每一行资料的唯一性。
第二,可以大大加快资料的检索速度,这也是建立索引的最主要的原因。
第三,可以加速表和表之间的连线,特别是在实现资料的参考完整性方面特别有意义。
第四,在使用分组和排序 子句进行资料检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的效能。

照片偏色是什么意思啊?请说的通俗一点!

拍摄照片是对实际景物“影像复制”,因此都希望照片能够尽可能的反映所拍景物的真实色彩。
偏色就是指照片的色彩与实际景物的色彩不相符。

在什么时候建立资料库索引

建库的时候

SQL资料库索引怎么建立

方法如下: Oracle中建立索引,会提高查询速度: create index 索引名 on 表名(列名); 例如: create index index_userid on tbl_detail(userid); 如何找资料库表的主键栏位的名称

oracle中EXECUTE IMMEDIATE是啥意思?如何使用,请用自己理解的语言,通俗的解释出来,谢谢了各位!

EXECUTE IMMEDIATE 一般用于 执行动态 SQL

例如:
SQL> BEGIN
2 EXECUTE IMMEDIATE ( 'SELECT * FROM test_dysql WHERE id=1' );
3 END;
4 /
PL/SQL procedure successfully completed.追问

请问一下什么是动态SQL?
用EXECUTE IMMEDIATE 有什么好处?
要执行SQL语句的话,我不用EXECUTE IMMEDIATE 也可以执行的啊?
实在是很模糊。。

追答

这个是用于在 存储过程里面. 动态的执行 SQL 语句。

例如:
有个存储过程, 用于检索表的行数。 传入的参数是 表的名称。
这种情况下,你
SELECT count(*) FROM v_变量
是无法执行的。

你只能定义一个变量 vsql varchar2(100);
然后
vsql = 'SELECT count(*) FROM ' || 'v_变量'
然后调用 EXECUTE IMMEDIATE 来执行。

动态SQL,意思就是你需要执行的 SQL 语句, 不是固定的。要等运行的时候, 才能确定下来。
也就像上面那个例子,表名是 外部传入的。

不过 动态SQL 与 EXECUTE IMMEDIATE 主要用在 存储过程里面。

假如你是用 C# 或者 Java 之类的开发语言。 访问数据库的话。
是用不到 EXECUTE IMMEDIATE 的。

参考资料:http://hi.baidu.com/wangzhiqing999/blog/item/49752e0d0ed5562b6a60fb51.html

参考技术A 是执行字符串中的SQL语句,如:execute immediate 'select * dual';

以上是关于资料库索引是啥意思 干啥 请说的通俗一点 谢谢的主要内容,如果未能解决你的问题,请参考以下文章

什么叫“指定端口”?请说得通俗一点。

Spring AOP是啥意思 ,大虾解释通俗一点,不要太专业,举例说明易懂一点。谢谢啊。

c语言中,malloc和free是啥意思?

请问:微信公众平台的接口配置信息中的“token”是啥意思?应该怎样设置?我不懂编程请说的详细些,谢~

长连接、短连接是啥意思?哪位大神给讲一下,不要太官方了,通俗易懂点,谢谢。

reference 是啥意思啊?