试列举何种情况考虑创建索引,在SQL中

作者&投稿:称趴 (若有异议请与网页底部的电邮联系)
sql语句优化怎么做的,建索引的时候要考虑什么~

1、表的主键、外键必须有索引;
2、数据量超过300的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5、索引应该建在选择性高的字段上;
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
A、正确选择复合索引中的主列字段,一般是选择性较好的字段;
B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;
E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;
8、频繁进行数据操作的表,不要建立太多的索引;
9、删除无用的索引,避免对执行计划造成负面影响;
以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。

主关键字建立唯一索引,ID字段,一般可以了.还有布尔型字段.具体参见SQL 帮助

转:
---使用索引优化数据库查询效率

1.不宜创建索引的情形

(1)经常插入,修改和删除的表

(2)数据量比较小的表,因为查询优化器在搜索索引时所花费的时间可能会大于遍历全表的数据所需要的时间

2.适合创建索引的情形

(1)为where子句中出现的列创建索引

(2)创建组合索引

(3)为group by 子句中出现的列创建索引

3.聚集索引的设计原则

(1)该列的数值是唯一的或者很少有重复的记录

(2)经常使用between ...and..按顺序查询的列

(3)定义identity的唯一列.

(4)经常用于对数据进行排序的列.

---无法使用索引的select语句

1.对索引列使用了函数,如:

select * from tb where max(id)=100

2.对索引列使用了'%xx',如:

select * from tb where id like '%1'

需要注意的不是所有使用like关键字的select 语句都无法使用索引,比如

select * from tb where id like '1%'就可以使用索引

3.在where子句中对列进行类型转换(其实也是使用到了函数)

4.在组合索引的第1列不是使用最多的列,如在下面3个查询语句中建立组合索引,按顺序包含col2,col1,id列;

select * from tb where id='1' and col1='aa'

select id,sum(col1) from tb group by id

select * from tb where id='2' and col2='bb'

则第一句和第二句无法使用到索引 所以需要注意组合索引的顺序

5.在where 子句中使用in关键字的某些句子

当在in关键字后面使用嵌套的select语句,将无法使用在该列上定义的索引

如:

select

*

from

ta

where

id

in

(select id from tb where ....)

--这样可以用到索引

select * from tb where id in('1','2')

SQL索引的建立对于SQL的高效运行是很重要的,索引可以大大提高SQL的检索速度。
打个比方,如果合理的设计且使用索引的SQL是一辆兰博基尼的话,那么没有设计和使用索引的SQL就是一个人力三轮车。
索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
建立索引会占用磁盘空间的索引文件。
以mysql为例,SQL目前主要有以下几种索引类型:
1.普通索引
2.唯一索引
3.主键索引
4.组合索引
5.全文索引
1.普通索引
是最基本的索引,它没有任何限制。它有以下几种创建方式:
直接创建索引
CREATE INDEX index_name ON table(column(length))

2.唯一索引
与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
(1)创建唯一索引
CREATE UNIQUE INDEX indexName ON table(column(length))

3.主键索引
是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引:
CREATE TABLE `table` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`title` char(255) NOT NULL , PRIMARY KEY (`id`)
);

4.组合索引
指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合
ALTER TABLE `table` ADD INDEX name_city_age (name,city,age);

5.全文索引
主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。fulltext索引配合match against操作使用,而不是一般的where语句加like。它可以在create table,alter table ,create index使用,不过目前只有char、varchar,text 列上可以创建全文索引。值得一提的是,在数据量较大时候,现将数据放入一个没有全局索引的表中,然后再用CREATE index创建fulltext索引,要比先为一张表建立fulltext然后再将数据写入的速度快很多。
创建表的适合添加全文索引
CREATE TABLE `table` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`title` char(255) CHARACTER NOT NULL ,
`content` text CHARACTER NULL ,
`time` int(10) NULL DEFAULT NULL , PRIMARY KEY (`id`),
FULLTEXT (content)
);


试列举何种情况考虑创建索引,在SQL中
1.不宜创建索引的情形 (1)经常插入,修改和删除的表 (2)数据量比较小的表,因为查询优化器在搜索索引时所花费的时间可能会大于遍历全表的数据所需要的时间 2.适合创建索引的情形 (1)为where子句中出现的列创建索引 (2)创建组合索引 (3)为group by 子句中出现的列创建索引 3.聚集索引的设计原则 ...

列举如何和进行创业机会的评估?
考虑技术更新和迭代的速度,以及技术风险。4. 资源获取评估:评估资金、人才、供应链等关键资源的获取情况,确保创业计划的顺利执行。考虑资源的稳定性和可持续性,以及成本效益。5. 团队能力评估:评估创始人的背景和经验,以及团队成员的专业技能和协作能力。分析团队对创业领域的认知和激情,以及应对挑战的...

属性列举法是什么?
同时,我们也可以考虑一些非传统的属性,如手机的材质、颜色、形状等,这些属性同样有可能成为创新点。在讨论和改进属性的过程中,我们可能会产生许多新的想法和创意。比如,我们可以设计一款折叠屏手机,通过改变手机的形态来同时满足大屏幕和小巧便携的需求。或者,我们可以开发一种新型电池技术,以大幅提升...

列举创建创新型国家的重要措举有哪些
(1)考虑创新需求:加强政策和法律的构建,改进创新机制,更好地满足创新发展的实际需要。建立综合、全球创新框架体系,完善市场管理创新机制以及信贷资源的配置和调整机制,确保创新型国家的创新优势。(2)发展创新合作:加大科技合作力度,大力发展科技合作,促进技术团队之间洽谈创新合作,共同推动创新创意研...

列举列举五种创新的方法并加以举例说明
三、使用新材料 竹纤维袜子因其吸湿和除臭特性受到欢迎。创业者应考虑产品原材料的创新,寻找替代传统材料的新选择。四、选择新市场 一家果冻厂通过将产品定位为青春女性食品“水晶之恋”成功开拓新市场。在市场竞争激烈时,重新定义市场和消费者,寻找蓝海。五、创新商业模式 一家书店通过提供免费租借图书...

从好处、烦恼和困难、失败的原因三方面列举个人创业的挑战
- 收入弹性大,可以根据盈利情况调整开销。- 实现个人创意,即使失败也能自主承担,无悔无怨。- 组建并管理自己的团队,提升个人能力,迅速成长为基层管理者。2. 创业过程中的烦恼:- 需应对工商、税务、卫生等多个政府部门的管理和检查。- 每天都要做出决策、思考和选择,精神压力大。- 承担盈利和亏损...

什么是希望点列举法?
希望点列举法是一种创新技法,它主要通过列举创新对象的希望点来寻找创新思路,进而提出创新方案。希望点,即用户在产品或服务中所期望达到的目标或满足的需求。这种方法的核心在于深入理解和把握用户的需求和期望,然后以此为基础进行产品或服务的创新设计。在具体操作中,希望点列举法通常分为以下几个步骤:...

创业具备的条件有哪些
生意很不好做,在这种情况下,如果没有相对充足的金钱备用,很可能撑不了多久。比如创业开店,不要以为开了店就能赚钱。开店前几个月往往生意不是特别好,甚至入不敷出。如果你没有充分的备用金,恐怕很难支撑下去。 尤其是对于一个创业小白来说,怎么以时间换空间,是一个必须考虑的问题。有了一定的开店时间,才能让...

创意列举法主要分为
类型 属性列举法 说明 这种方法是一种创意思维策略。 强调人们在创 先观察和分析属性特征,造的过程中,先观察和分析事物或问题的属性 再针对每项特征提出创新 特征,然后再针对每项特性提出相应的改良或 构想。改变的构想。这种方法是指人们不断地提出理想和愿望,针不断地提出理想和愿望,对这些希望和...

结合医学生的特点,请列举出创意的来源渠道?
想要从医学生的方面找到创意的话,也是要把医疗跟最近火热的5g技术和互联网加结合起来的。

永兴县18410215661: 为什么写sql语句,sq加了索引 -
邵娥喜络: 用SQL建立索引为了给一个表建立索引,启动任务栏SQLSever程序组中的ISQL/w程序.进入查询窗口后,输入下面的语句:CREATEINDEXmycolumn_indexONmytable(myclumn)这个语句建立了一个名为mycolumn_index的索引.你可以给一个...

永兴县18410215661: oracle 用了索引反而慢了,为什么? -
邵娥喜络: 使用索引查一条数据,需要先访问索引的数据,然后再访问表的数据,两次读操作 如果全表扫描,只访问表的数据,一次读操作所以,如果查询结果占到表数据的50%以上,使用索引必然慢 再考虑到一次读操作可以读多条数据,索引的结构又比表复杂 可能查询结果占到表数据的20%以上,使用索引就不如全表扫描了因此,ORACLE的优化器是基于成本 需要经常更新统计数据,便于优化器判断使用全表扫描和索引的成本高低

永兴县18410215661: Oracle Sequence中Cache与NoCache的区别;何时使用 -
邵娥喜络: 先来看下创建sequence的语句:create sequence SEQ_ID minvalue 1 maxvalue 99999999 start with 1 increment by 1 cache n / nocache --其中n代表一个整数,默认值为20 order; 如果指定CACHE值,Oracle就可以预先在内存里面放置一些...

永兴县18410215661: sqlite查数据库中所有表各有多少条记录的查询,sq -
邵娥喜络: SELECT name FROM sqlite_masterWHERE type='table'ORDER BY name;如果你在sqlite行命令下,你可以直接使用 .tables 或 .schema 命令来得到完整的数据库集包括表s和索引s. 这两个命令支持匹配符.如果在其它宿主程序中例如 C/C++等,你可以从一个特殊的表 "SQLITE_MASTER" 得到类似的信息

永兴县18410215661: 用调查表法的形式,对存货的内部控制制度提出10个问题 -
邵娥喜络: 一、存货入库时是否有严格的检验程序:1.数量、质量;2.数量是否与入库单一致:多了,如何处理;少了,如何处理3.如果有质量问题,如何处理,有无单独的缺陷产品存放区,有无相关单据给相关部门进行处理二、存货出库时手续是否完备...

永兴县18410215661: "信息检索策略的构建方法及技巧"的解释,定义,说明,检索工具,检索途径 -
邵娥喜络: 所谓信息检索策略就是为实现检索没目标而制定的全盘计划和方案,是对整个检索过程的谋划和指导. 编辑本段制定一个良好的检索策略. 如何制定一个良好的检索策略,往往涉及到以下各方面的知识和技能. l 明确检索的内容和目的...

永兴县18410215661: 如何设置数据库的权限? -
邵娥喜络: 一、必要性 随着近年来数据库技术的深入发展,以Unix平台为代表的Informix Dynamic Server和以NT平台为代表的MS SQL Server得到了广泛的应用.在一个公共的环境中,存在大量的用户操作,有数据库管理员,主要做数据管理维护工作,也...

永兴县18410215661: 谁能告诉我?SQ语句查询两个表? -
邵娥喜络: select B.truebillno, B.outpid,B.outpname,A.totalfee,A.feetime,A.feeman from B jion A on B.truebillno = A.truebillno; 然后想速度更快,可以在A,B第一个字段上建索引 上海市乐山路北大青鸟慧谷园区33号2号楼2楼

永兴县18410215661: sqlite> select sql from sqlite - master where type = 'table' ...> and tbl - name ='company';.... -
邵娥喜络: SQLite数据库中一个特殊的名叫 SQLITE_MASTER 上执行一个SELECT查询以获得所有表的索引.每一个 SQLite 数据库都有一个叫 SQLITE_MASTER 的表, 它定义数据库的模式. SQLITE_MASTER 表看起来如下:CREATE TABLE sqlite_...

永兴县18410215661: 请教Android中数据库表结构 -
邵娥喜络: SQPte 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, Python)都使用了 SQPte. SQPte 由以下几个组件组成:SQL 编译...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网