导航:首页 > 数据处理 > 哪些数据不能创建索引

哪些数据不能创建索引

发布时间:2023-01-16 03:14:50

1. 在中国学术期刊网络出版总库中,不可以进行什么检索

不可以进行词频控制。《中国学术期刊网络出版总库》检索结果页面将通过检索平台检索得到的检索结果以列表形式展示出来,并提供对检索结果进行分组分析、排序分析的方法,来准确查找文献。

检索结果分组类型包括:学科类别、期刊名称、研究资助基金、研究层次、文献作者、作者单位、中文关键词。

学科类别分组是将检索结果按照168专辑分类下级的4000多个学科类目进行分组。按学科类别分组可以查看检索结果所属的更细的学科专业,进一步进行筛选,找到所关注文献。

索引的注意事项

1、索引可以提高数据的访问速度,但同时也增加了插入、更新和删除操作的处理时间。所以是否要为表增加索引、索引建立在那些字段上,是创建索引前必须要考虑的问题。解决此问题就是分析应用程序的业务处理、数据使用,为经常被用作查询条件、或者被要求排序的字段建立索引。

2、索引是建立在数据库表中的某些列的上面。因此在创建索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。

3、索引应该建在选择性高的字段上。

4、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引。

2. 在一张自由表中,不能建立哪种索引( )

在Visual FoxPro中,自由表不能建立的索引是主索引。

根据索引功能的不同,可以将索引分为主索引、候选索引、唯一索引和普通索引四种。其中,主索引是在指定字段或表达式中不允许出现重复值的索引,在数据库表中才能建立主索引,即在一个自由表中不能建立主索引。



(2)哪些数据不能创建索引扩展阅读

在数据库系统中建立索引主要有以下作用:

(1)快速取数据;

(2)保证数据记录的唯一性;

(3)实现表与表之间的参照完整性;

(4)在使用ORDER by、group by子句进行数据检索时,利用索引可以减少排序和分组的时间。

3. 在Access的下列数据类型中,不能建立索引的数据类型是________。

因为你选择备注类型就不会出现索引的选项

4. 在Access的下列数据类型中,不能建立索引的数据类型是______

备注型。

access的数据类型是关系数据库。备注型用来保存长度较长的文本及数字,允许字段能够存储长达65535个字符的内容。但Access不能对备注字段进行排序或索引,却在备注字段中虽然可以搜索文本,但却不如在有索引的文本字段中搜索得快。

在Access数据库中,一种用于建立同步复制唯一标识符的 16字节字段。GUID用于标识副本,副本集,表,记录和其他对象。在 Access数据库中GUID是同步复制 ID。)

(4)哪些数据不能创建索引扩展阅读:

注意事项:

1、Access数据库的通配符为*号,一般数据库为%号。

2、Access数据库的日期查询需要在日期前后需要加#号,一般数据库用单引号括起来即可。

3、Access数据库日期的转换使用CDate函数,其他数据库有相应函数,一般不需要转换成日期类型时可以使用单引号括起来即可。

4、连接字符串,可以使用相对路径,也可以使用绝对路径:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dataMiddleResult.mdb。

5. MySql索引之哪些情况适合创建索引

说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的。

某个字段在SELECT语句的 WHERE 条件中经常被使用到,那么就需要给这个字段创建索引了。尤其是在

数据量大的情况下,创建普通索引就可以大幅提升数据查询的效率。

比如student_info数据表(含100万条数据),假设我们想要查询 student_id=123110 的用户信息。

索引就是让数据按照某种顺序进行存储或检索,因此当我们使用 GROUP BY 对数据进行分组查询,或者

使用 ORDER BY 对数据进行排序的时候,就需要 对分组或者排序的字段进行索引 。如果待排序的列有多

个,那么可以在这些列上建立 组合索引 。

对数据按照某个条件进行查询后再进行 UPDATE 或 DELETE 的操作,如果对 WHERE 字段创建了索引,就

能大幅提升效率。原理是因为我们需要先根据 WHERE 条件列检索出来这条记录,然后再对它进行更新或

删除。如果进行更新的时候,更新的字段是非索引字段,提升的效率会更明显,这是因为非索引字段更

新不需要对索引进行维护。

有时候我们需要对某个字段进行去重,使用 DISTINCT,那么对这个字段创建索引,也会提升查询效率。

比如,我们想要查询课程表中不同的 student_id 都有哪些,如果我们没有对 student_id 创建索引,执行

SQL 语句:

运行结果(600637 条记录,运行时间 0.683s ):

如果我们对 student_id 创建索引,再执行 SQL 语句:

运行结果(600637 条记录,运行时间 0.010s ):

你能看到 SQL 查询效率有了提升,同时显示出来的 student_id 还是按照 递增的顺序 进行展示的。这是因

为索引会对数据按照某种顺序进行排序,所以在去重的时候也会快很多。

首先, 连接表的数量尽量不要超过 3 张 ,因为每增加一张表就相当于增加了一次嵌套的循环,数量级增

长会非常快,严重影响查询的效率。

其次, 对 WHERE 条件创建索引 ,因为 WHERE 才是对数据条件的过滤。如果在数据量非常大的情况下,

没有 WHERE 条件过滤是非常可怕的。

最后, 对用于连接的字段创建索引 ,并且该字段在多张表中的 类型必须一致 。比如 course_id 在

student_info 表和 course 表中都为 int(11) 类型,而不能一个为 int 另一个为 varchar 类型。

举个例子,如果我们只对 student_id 创建索引,执行 SQL 语句:

运行结果(1 条数据,运行时间 0.189s ):

这里我们对 name 创建索引,再执行上面的 SQL 语句,运行时间为 0.002s 。

创建一张商户表,因为地址字段比较长,在地址字段上建立前缀索引

问题是,截取多少呢?截取得多了,达不到节省索引存储空间的目的;截取得少了,重复内容太多,字

段的散列度(选择性)会降低。 怎么计算不同的长度的选择性呢?

先看一下字段在全部数据中的选择度:

通过不同长度去计算,与全表的选择性对比:

公式:

例如:

引申另一个问题:索引列前缀对排序的影响

拓展:Alibaba《Java开发手册》

【 强制 】在 varchar 字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据实际文本

区分度决定索引长度。

说明:索引的长度与区分度是一对矛盾体,一般对字符串类型数据,长度为 20 的索引,区分度会 高达

90% 以上 ,可以使用 count(distinct left(列名, 索引长度))/count(*)的区分度来确定。

这样也可以较少的建立一些索引。同时,由于"最左前缀原则",可以增加联合索引的使用率。

结论:在数据表中的数据行数比较少的情况下,比如不到 1000 行,是不需要创建索引的。

举例1:要在 100 万行数据中查找其中的 50 万行(比如性别为男的数据),一旦创建了索引,你需要先

访问 50 万次索引,然后再访问 50 万次数据表,这样加起来的开销比不使用索引可能还要大。

举例2:假设有一个学生表,学生总数为 100 万人,男性只有 10 个人,也就是占总人口的 10 万分之 1。

学生表 student_gender 结构如下。其中数据表中的 student_gender 字段取值为 0 或 1,0 代表女性,1 代

表男性。

如果我们要筛选出这个学生表中的男性,可以使用:

运行结果(10 条数据,运行时间 0.696s ):

结论:当数据重复度大,比如 高于 10% 的时候,也不需要对这个字段使用索引。

例如身份证、UUID(在索引比较时需要转为ASCII,并且插入时可能造成页分裂)、MD5、HASH、无序长字

符串等。

① 冗余索引

举例:建表语句如下

我们知道,通过 idx_name_birthday_phone_number 索引就可以对 name 列进行快速搜索,再创建一

个专门针对 name 列的索引就算是一个 冗余索引 ,维护这个索引只会增加维护的成本,并不会对搜索有

什么好处。

② 重复索引

另一种情况,我们可能会对某个列 重复建立索引 ,比方说这样:

我们看到,col1 既是主键、又给它定义为一个唯一索引,还给它定义了一个普通索引,可是主键本身就

会生成聚簇索引,所以定义的唯一索引和普通索引是重复的,这种情况要避免。

欢迎共同进步:
QQ群:1007576722
https://huchao.blog.csdn.net/article/details/124220802?spm=1001.2014.3001.5502

6. 为什么数据库中要创建索引

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

也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?这种想法固然有其合理性,然而也有其片面性。虽然,索引有许多优点,但是,为表中的每一个列都增加索引,是非常不明智的。这是因为,增加索引也有许多不利的一个方面。第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

索引是建立在数据库表中的某些列的上面。因此,在创建索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该在这些列上创建索引,例如:在经常需要搜索的列上,可以加快搜索的速度;在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;在经常使用在where子句中的列上面创建索引,加快条件的判断速度。

同样,对于有些列不应该创建索引。一般来说,不应该创建索引的的这些列具有下列特点:第一,对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。第二,对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。第三,对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。第四,当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。

阅读全文

与哪些数据不能创建索引相关的资料

热点内容
义乌狗市场狗多少一只 浏览:650
如何解除移动数据限流的方法 浏览:174
郴州市活禽交易市场什么时候休市 浏览:456
四川空间信息产业发展怎么样 浏览:284
宏基笔记本怎么样关闭程序 浏览:522
邯郸有哪些铁板市场 浏览:850
问道如何查询账号信息 浏览:323
工商银行交易4204是什么意思 浏览:454
食品产品标准号怎么解读 浏览:536
我爱我家链家为什么退出北京市场 浏览:648
男生如何缩小脸部毛孔产品 浏览:199
数据线方头卡扣怎么卸 浏览:668
宫颈代理怎么做 浏览:815
想做食品代理商怎么样 浏览:366
农资加盟店需多少钱代理商 浏览:492
信息验证码如何设置 浏览:296
设计时必要准备的数据有哪些 浏览:886
采取的程序是有什么优势 浏览:115
伪中币交易网站有哪些 浏览:870
代理记账专家多少钱 浏览:529