精华内容
下载资源
问答
  • mysql创建索引的时候支持字段的desc排序方式吗
    千次阅读
    2020-05-09 19:27:23

    MySql创建索引时百支持ASC或DESC排序。

    下面举例
    创建表时同时度创建索知引降序排序(sname 字段上普通道索引降序)
    create table tbl1 (
    id int unique, sname varchar(50),
    index tbl1_index_sname(sname desc)
    );

    在已有的表创建索引语法
    create [unique|内fulltext|spatial] index 索引名容
    on 表名(字段名 [长度] [asc|desc]);

    更多相关内容
  • Mysql的排序字段要建立索引,我想这连初学者都知道。但是我想知道的是在下面这两种情况下对索引建立是否有一定的标准。假如我建立一个这样的post表mysql> DESC post;+---------+------------------+------+-----+...

    Mysql的排序字段要建立索引,我想这连初学者都知道。但是我想知道的是在下面这两种情况下对索引建立是否有一定的标准。假如我建立一个这样的post表mysql> DESC post;

    +---------+------------------+------+-----+---------+----------------+

    | Field | Type | Null | Key | Default | Extra |

    +---------+------------------+------+-----+---------+----------------+

    | id | int(11) unsigned | NO | PRI | NULL | auto_increment |

    | user_id | int(11) | YES | | 0 | |

    | status | tinyint(4) | YES | | 0 | |

    | text | text | YES | | NULL | |

    +---------+------------------+------+-----+---------+----------------+

    4 rows in set (0.00 sec)

    如果我要按user_id来查询mysql> SELECT * FROM post WHERE user_id = 123;

    +----+---------+--------+-----------------+

    | id | user_id | status | text |

    +----+---------+--------+-----------------+

    | 1 | 123 | 1 | asdfasdfasdfsdf |

    | 3 | 123 | 1 | dddddd |

    +----+---------+--------+-----------------+

    2 rows in set (0.00 sec)

    或者我要按status来查询mysql> SELECT * FROM post WHERE status = 0;

    +----+---------+--------+------------------+

    | id | user_id | status | text |

    +----+---------+--------+------------------+

    | 2 | 243 | 0 | 23423zxcv2323234 |

    | 4 | 567 | 0 | xcvq3453q4534 |

    +----+---------+--------+------------------+

    2 rows in set (0.00 sec)

    这两种查询在语句上看来没有任何区别,但是业务需求上是有很大区别的,user_id是一个外键字段,它的值是很分散的。而status是一个状态字段,它就集中在几个数字上,可能大部分还是某一个数字。对这两种查询如果做索引需要怎么考虑呢?我想的是虽然status是作为查询条件的,但是如果它的值大部分都是重复的,那么实际上索引起不到什么作用,反而还耽误载入索引的时间,不知道我的想法是否正确?

    展开全文
  • mysql需要在哪些字段上加索引

    千次阅读 2021-03-03 20:48:56
    3、分组字段或者排序字段应该创建索引;4、选择性高的字段上应该建立索引。1、表的某个字段值得离散度越高,该字段越适合选作索引的关键字。主键字段以及唯一性约束字段适合选作索引的关键字,原因就是这些字段的值...

    mysql需要加索引的字段:1、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;2、经常与其他表进行连接的表,在连接字段上应该建立索引;3、分组字段或者排序字段应该创建索引;4、选择性高的字段上应该建立索引。

    1b45766d81f7ae1f51b772c8b921d35f.png

    1、表的某个字段值得离散度越高,该字段越适合选作索引的关键字。主键字段以及唯一性约束字段适合选作索引的关键字,原因就是这些字段的值非常离散。MySQL 在处理主键约束以及唯一性约束时,考虑周全。数据库用户创建主键约束的同时, MySQL 自动创建主索引( primary index ),且索引名称为 Primary;数据库用户创建唯一性索引时, MySQL 自动创建唯一性索引( unique index ),默认情况下,索引名为唯一性索引的字段名。

    2、占用存储空间少的字段更适合选作索引的关键字。例如,与字符串相比,整数字段占用的存储空间较少,因此,较为适合选作索引关键字。

    3、存储空间固定的字段更适合选作索引的关键字。与 text 类型的字段相比, char 类型的字段较为适合选作索引关键字。

    4、Where 子句中经常使用的字段应该创建索引,分组字段或者排序字段应该创建索引,两个表的连接字段应该创建索引。

    5、更新频繁的字段不适合创建索引,不会出现在 where 子句中的字段不应该创建索引。

    6、经常与其他表进行连接的表,在连接字段上应该建立索引;

    7、索引应该建在选择性高的字段上;

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

    展开全文
  • mysql排序字段索引认识

    千次阅读 2017-05-25 17:24:05
    因项目需要需要对数据库一张表进行排序,取前10名 该表基数6W, invite_sign = 'geight' 条件加上后数据为2W 未优化前,sql语句如下: SELECT * FROM wk_active_gt_sign_info WHERE invite_sign = 'geight' ORDER ...

    因项目需要,需要对数据库一张表进行排序,取前10名

    该表基数6W, invite_sign = 'geight' 条件加上后数据为2W

    未优化前,sql语句如下:

    SELECT * FROM wk_active_gt_sign_info WHERE invite_sign = 'geight' ORDER BY invite_meet_num DESC LIMIT 10

    执行效率为:80ms左右

    Explain该语句,发现明显有filesort ,二次排序


    查阅资料,由于where条件invite_sign是等于条件,故建立invite_sign + invite_meet_num 索引,执行效率明显明显优化为2ms左右


    事情本该到此结束,但后有需求变动,当invite_meet_num 一样的时候,需要第二个记录时间的排序字段 —— remark1 

    故sql语句如下:

    SELECT * FROM wk_active_gt_sign_info WHERE invite_sign = 'geight' ORDER BY invite_meet_numDESC,remark1 ASC LIMIT 10

    建立invite_sign + invite_meet_num + remark1 索引

    结果却不如愿,执行效率为80ms左右,有filesort


    接着查阅资料,或者想着使用程序的角度去处理等等,都并不严谨,或效率较低等等。


    而后突然一想,会不会是由于排序字段一个正序,一个倒序导致的索引无效,故使用如下sql测试

    SELECT * FROM wk_active_gt_sign_info WHERE invite_sign = 'geight' ORDER BY invite_meet_numDESC,remark1 DESC LIMIT 10

    执行效率超快,又回归2ms左右,大喜


    接下来就好办了,remark1记录数据的修改时间,本是正序,越早的时间越往前,那好办了,使用一个大的时间,对要记录的时间进行一个减法

    使用这个time就可以倒序了。YES  搞定任务

    总结:

    mysql where z和order by x,y  可以建立联合索引 z+x+y来处理,但必须保证x,y两个排序字段,同为倒序或正序。


    接下抛个问题吧,10W的数据以内,查询一个实时的排名

    sql为 SELECT COUNT(*)+1 FROM wk_active_gt_sign_info WHERE invite_sign = 'geight' AND (invite_meet_num >1 OR (invite_meet_num =1 AND remark1 >2))

    执行效率为30ms左右,尚可以接受

    有没有更高效的解决办法呢?

    展开全文
  • Index排序索引可以保证数据的有序性,因此不需要再进行排序。 FileSort排序:一般在内存中进行排序,占用CPU较多。如果待排结果较大,会产生临时文件I/O到磁盘进行排序,效率较低。 所以使用ORDER BY子句时,应该...
  • 【数据库】mysql哪些字段适合加索引

    千次阅读 2021-02-03 15:36:07
    数据库中字段适合添加索引的有表中某个字段值离散度越高越适合,占用存储空间少的字段,存储空间固定的字段,where子句中经常用到的字段等1、表的某个字段值得离散度越高,该字段越适合选作索引的关键字。...
  • 考虑包含username和date的event集合,应用程序可以查询按照username升序和按照date降序: db.events.find().sort( { username: 1, date: -1 } ) 或者查询按照username降序和date升序: ...下面的索引可以支持上面的
  • Mysql哪些字段适合建立索引

    千次阅读 2020-03-24 15:38:38
    数据库建立索引常用的规则如下: 1、表的主键、外键必须有索引; 2、数据量超过300的表应该有索引; 3、经常与其他表进行连接的表,在连接字段上...7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:...
  • 时间字段是否适合建立索引

    万次阅读 2017-11-22 11:56:13
    时间字段是否适合建索引? 可以建立索引的;至于建立聚集索引或者是非聚集索引,那要看你这个时间字段的具体情况以及使用或变更频繁程度。 一般来说,适合建立聚集索引的要求:“既不能绝大多数都相同,又不能只有...
  • mysql中经常根据时间列筛选数据,那么可以为时间字段建立索引吗?谢谢! (数据量比较大,但是一般查询只查询今天的数据,而表中存有所有历史记录)
  • 时间字段索引

    万次阅读 2018-11-14 22:05:20
    微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:...
  • 【mysql】mysql时间字段怎么加索引

    千次阅读 2021-02-02 16:12:26
    查出5万条结果大约需要4.5秒,这个字段已经加了普通索引,但是explain的类型还是ALL。怎么优化?语句是between and。换了>=和<=查询需要的时间也差不多。SELECT id,name,sex,city,headimg FROM user WHERE ...
  • order by使用索引排序时会失效吗?

    千次阅读 2021-07-10 17:10:11
    先说结论, order by后面跟的索引列只是对 驱动表才起作用, 也就是说如果是对驱动表进行排序, 那么order by后面的索引是起作用的, 但是如果order by后面跟的排序字段不是驱动表的, 那么这时索引是不起作用的. ...
  • 索引可以提高数据的检索效率,也可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本。排序分组操作主要消耗的就是CPU资源和内存,所以能够在排序分组操作中好好的利用索引将会极大地降低CPU资源的消耗。 ...
  • 那些字段适不适合建索引

    千次阅读 2021-02-02 14:36:59
    数据库建立索引常用的规则如下:表的主键、外键必须有索引;数据量超过300的表应该有索引;...复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:正确选择复合索引中的主列字段,一般是选择性...
  • 为时间字段索引

    千次阅读 2020-03-24 18:29:58
    文章目录为时间字段索引(待更进)一、问题1、描述:日期不一致2、原因:时区不同3、解决方法: 时区修改二、datetime和varchar类型效率比较1、背景2、开始三、时间字段索引1、聚集索引2、非聚集索引3、时间字段...
  • 但是遇到order by字段后面的字段,特别是当这个字段不在过滤条件中时,小编就会心里打鼓,是加到索引里面呢,还是不加到索引里面呢,加进去会不会没有起到提升性能的作用,反而让索引变得更加复杂,给系统带来不必要...
  •  联合索引让where条件字段和排序字段都用上了索引,问题解决了!   联合索引使用的原理 但是为什么能解决这个问题呢,这时大家可能就会记住一个死理,就是联合索引可以解决where过滤和排序的问题,也不去了解 其...
  • 索引排序的影响

    万次阅读 2017-03-16 19:47:19
    索引不仅能提高查询速度,还可以添加排序速度,如果order by 后面的语句用到了索引,那么将会提高排序的速度。测试1、创建测试表:t15表CREATE TABLE `t15` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `...
  • 一般来说, MySQL 中的 B-Tree 索引的物理文件大多都是以 B+tree的结构来存储的,也就是所有实际需要的数据都存放于 Tree 的 Leaf Node,而且到任何一个 Leaf Node 的最短路径的长度都是完全相同的,可能各种数据库...
  • MySQL中四种方式给字段添加索引

    千次阅读 2021-07-03 12:06:21
    这里简单提一下关于MySQL中给字段创建索引的四种方式: 添加主键 ALTER TABLE tbl_name ADD PRIMARY KEY (col_list); // 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。 添加唯一索引 ALTER ...
  • ES里多字段分组后排序

    千次阅读 2020-12-22 22:14:07
    ES里多字段分组再排序,只有两种办法,其他办法都不准:办法一:用script如//主桶:设置要聚合的字段,sqlTermsBuilder one = AggregationBuilders.terms("one").script(new Script("doc['"+dbFiled+"'].value +'{#}'...
  • python 列表 按照 指定索引 排序

    万次阅读 2019-12-02 14:53:28
    记录这个简单小问题,以便提醒自己(说明:这里想表达的不是普通的按照从小到大或从大到小的排序方式) import numpy as np a = np.array([1,3,6,7,8,2,4,5]) index = np.argsort(a) #index 结果为 array([0, 5,...
  • 一、适合用索引的场景 1、主键 主键一般为id等具有唯一性标识的字段需要频繁查找、连接。InnoDB中会自动为主键建立聚集索引,即使没有定义主键,...group by和union也属于需要排序的操作,这里也要注意字段出现在whe
  • 详细介绍了各种高性能的索引使用策略,比如索引排序索引下推、压缩索引等等,以及常见索引失效的情况。
  • Mongodb 索引 对查询结果的排序

    千次阅读 2020-11-17 11:48:06
    1. 先从创建单字段索引,理解“排序”: db.集合名.createIndex(要给哪一列创建索引 [,额外选项]); 第1个参数是“给哪一列创建索引”,它的格式是: {key:1或-1},其中1表示升序,-1表示降序。 第2个参数是 ...
  • 查询字段是否存在 查询course表中,存在lectures_count字段的记录信息 db.course.find( { “lectures.lectures_count”: { $exists: true } } ) 参数:ture或者false 使用update命令,删除单一字段 update命令 ...
  • MySQL排序(Order By)为什么要使用索引 1. WHERE条件句中使用索引 以查询一条程咬金 记录为例: 创建索引 先创建一个二级索引 不选择索引字段做条件查询 key=null 执行计划中没有用到索引 rows=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 256,038
精华内容 102,415
关键字:

排序字段 事件 需要索引吗

友情链接: DHT11.zip