会导致索引失效语句「建议收藏」

会导致索引失效语句「建议收藏」1、使用like关键字模糊查询时,% 放在前面索引不起作用,只有“%”不在第一个位置,索引才会生效(like ‘%文’–索引不起作用)2、使用联合索引时,只有查询条件中使用了这些字段中的第一个字段,索

1、使用like关键字模糊查询时,% 放在前面索引不起作用,只有“%”不在第一个位置,索引才会生效(like ‘%文’–索引不起作用)
2、使用联合索引时,只有查询条件中使用了这些字段中的第一个字段,索引才会生效
3、使用OR关键字的查询,查询语句的查询条件中只有OR关键字,且OR前后的两个条件中的列都是索引时,索引才会生效,否则索引不生效。
4、尽量避免在where子句中使用!=或<>操作符,否则引擎将放弃使用索引而进行全表扫描。
5、对查询进行优化,应尽量避免全表扫描,首先应考虑在where以及order by涉及的列上建立索引。
6、应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:
  select id from t where num/2=100
  应改为:
  select id from t where num=100*2
7、尽量避免在where子句中对字段进行函数操作,将导致引擎放弃使用索引而进行全表扫描。
8、不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。
9、并不是所有的索引对查询都有效,sql是根据表中的数据来进行查询优化的,当索引列有大量数据重复时,sql查询不会去利用索引,如一表中有字段
  sex,male,female几乎个一半,那么即使在sex上建立了索引也对查询效率起不了作用。
10、索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,
  因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,
  若太多则应考虑一些不常使用到的列上建的索引是否有 必要。
11、尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。
  这是因为引擎在处理查询和连接时会 逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。
12、mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。
   因此数据库默认排序可以符合要求的情况下不要使用排序操作,尽量不要包含多个列的排序,如果需要最好给这些列建复合索引。
13、order by 索引 ,不起作用的问题(除了主键索引之外):
  1、 如果select 只查询索引字段,order by 索引字段会用到索引,要不然就是全表排列;

  2、如果有where 条件,比如where vtype=1 order by vtype asc . 这样order by 也会用到索引!

二、四种索引

PRIMARY, INDEX, UNIQUE 这3种是一类
PRIMARY 主键。 就是 唯一 且 不能为空。
INDEX 索引,普通的
UNIQUE 唯一索引。 不允许有重复。
FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。

三、常用SQL优化:
1.优化group by 语句
默认情况,MySQL对所有的group by col1,col2进行排序。这与在查询中指定order by col1, col2类似。如果查询中包括group by但用户想要避免排序结果的消耗,则可以使用order by null禁止排序
2.有些情况下,可以使用连接来替代子查询。因为使用join,MySQL不需要在内存中创建临时表。
3.如果想要在含有or的查询语句中利用索引,则or之间的每个条件列都必须用到索引,如果没有索引,则应该考虑增加索引
select * from 表名 where 条件1=‘’ or 条件2=‘tt’

————————————————

原文链接:https://blog.csdn.net/qq_42695926/article/details/83900198

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10501.html

(0)
上一篇 2022-12-26
下一篇 2022-12-26

相关推荐

  • 使用Python获取字典数据

    使用Python获取字典数据Python中字典是一种可变的数据类型,可以存储任意类型的数据,是由一组键值对构成的映射关系。字典的键必须是不可变类型,如字符串、数字或元组,而值则可以是任意类型。字典可以用花括号{}或者dict()函数来表示。

    2024-01-02
    110
  • 面试mysql优化_面试官我们会考虑的

    面试mysql优化_面试官我们会考虑的前言 MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格组成, 表格一般包括以下: 表头(header): 每…

    2023-03-11
    156
  • Spark3 学习【基于Java】4. Spark-Sql数据源

    Spark3 学习【基于Java】4. Spark-Sql数据源通过DF,Spark可以跟大量各型的数据源(文件/数据库/大数据)进行交互。前面我们已经看到DF可以生成视图,这就是一个非常使用的功能。 简单的读写流程如下: 通过read方法拿到DataFrameR

    2023-05-01
    154
  • elasticsearch介绍_elastics

    elasticsearch介绍_elastics疫情已经持续了好几个月了,作为程序员滴我们也帮不上什么忙,只有老老实实呆在家里或者出门一定戴口罩准守一些规则,不给国家添乱。不过最近疫情开始有所扭转,但是还是对国家经济,对企业业务造成了很大的影响,我

    2023-02-02
    165
  • Python命令行参数解析

    Python命令行参数解析命令行参数解析是命令行工具开发中的重要一环,它可以帮助我们方便地为我们的程序传递参数。在Python中,有许多优秀的库可以用来解析命令行参数,例如Python自带的argparse库、第三方库docopt等。接下来,我们就来详细地了解一下Python命令行参数解析。

    2024-02-10
    90
  • bin压缩文件_php新特性

    bin压缩文件_php新特性作者:王福祥 爱可生 DBA 团队成员,负责客户的数据库故障处理以及调优。擅长故障排查及性能优化。对数据库相关技术有浓厚的兴趣,喜欢分析各种逻辑。 本文来源:原创投稿 *爱可生开源社区出品,原创内容…

    2023-03-03
    148
  • Python中Ceil函数用法

    Python中Ceil函数用法a href=”https://beian.miit.gov.cn/”苏ICP备2023018380号-1/a Copyright www.python100.com .Some Rights Reserved.

    2024-04-17
    84
  • Mysql 中 DDL、DML、DQL、DCL、TCL「终于解决」

    Mysql 中 DDL、DML、DQL、DCL、TCL「终于解决」1. DDL(Data Definition Languages)语句:即数据库定义语句 用来创建数据库中的表、索引、视图、存储过程、触发器等,常用的语句关键字有:CREATE、 ALTER、 DR…

    2023-04-01
    151

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注