加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql索引提高优化order by语句用法详解

发布时间:2022-06-15 14:11:49 所属栏目:MySql教程 来源:互联网
导读:在数据库中我们一般都会对一些字段进行索引操作,这样可以提升数据的查询速度,同时提高数据库的性能像order by ,group by前都需要索引哦。 先我们要注意一下 1mysql一次查询只能使用一个索引。如果要对多个字段使用索引,建立复合索引。 2在ORDER BY操作中
    在数据库中我们一般都会对一些字段进行索引操作,这样可以提升数据的查询速度,同时提高数据库的性能像order by ,group by前都需要索引哦。
 
    先我们要注意一下
 
    1>mysql一次查询只能使用一个索引。如果要对多个字段使用索引,建立复合索引。
 
    2>在ORDER BY操作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引。
 
 
    通过索引优化来实现MySQL的ORDER BY语句优化:
 
    1、ORDER BY的索引优化。如果一个SQL语句形如:SELECT [column1],[column2],…. FROM [TABLE] ORDER BY [sort];
 
    在[sort]这个栏位上建立索引就可以实现利用索引进行order by 优化。
 
    2、WHERE + ORDER BY的索引优化,形如:SELECT [column1],[column2],…. FROM [TABLE] WHERE [columnX] = [value] ORDER BY [sort];
 
    建立一个联合索引(columnX,sort)来实现order by 优化。
 
    注意:如果columnX对应多个值,如下面语句就无法利用索引来实现order by的优化
 
    SELECT [column1],[column2],…. FROM [TABLE] WHERE [columnX] IN ([value1],[value2],…) ORDER BY[sort];
 
    3、WHERE+ 多个字段ORDER BY
 
    SELECT * FROM [table] WHERE uid=1 ORDER x,y LIMIT 0,10;
 
    建立索引(uid,x,y)实现order by的优化,比建立(x,y,uid)索引效果要好得多。
 
    MySQL Order By不能使用索引来优化排序的情况.
 
    * 对不同的索引键做 ORDER BY :(key1,key2分别建立索引)
 
    SELECT * FROM t1 ORDER BY key1, key2;
 
 
    MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响。通常来说,可以遵循以下一些指导原则:
 
    (1)越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。
 
    (2)简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。
 
    (3)尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读