首页 > 数据库 >SQL语句查询优化方法

SQL语句查询优化方法

时间:2022-11-12 21:56:40浏览次数:38  
标签:语句 username 尽量避免 t2 查询 SQL WHERE SELECT

建立索引并命中索引,在查询的时候,要尽量让数据库引擎使用索引。加入explain执行计划

1.尽量避免使用select *
2.尽量避免使用!=
3.尽量避免使用or
    优化方式:可以用union代替or。如下:
    SELECT * FROM t WHERE username="hkw"
    UNION
    SELECT * FROM t WHERE nickname="jon"
4.尽量避免使用in 和not in
    优化方式:如果是连续数值,可以用between代替
    如果是子查询,可以用exists代替。如下:
    SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t2 WHERE t1.username = t2.username)
5.尽量避免在字段开头模糊查询
    SELECT * FROM t WHERE username LIKE '%li%'
    优化方式:尽量在字段后面使用模糊查询。如下:
    SELECT * FROM t WHERE username LIKE 'li%'
6.尽量避免进行null值的判断
    SELECT * FROM t WHERE score IS NULL
    优化方式:可以给字段添加默认值0,对0值进行判断。如下:
    SELECT * FROM t WHERE score = 0
7.尽量避免在where条件中等号的左侧进行表达式、函数操作
    SELECT * FROM t2 WHERE score/10 = 9
    SELECT * FROM t2 WHERE SUBSTR(username,1,2) = 'li'
    优化方式:可以将表达式、函数操作移动到等号右侧。如下:
    SELECT * FROM t2 WHERE score = 10*9
    SELECT * FROM t2 WHERE username LIKE 'li%'

 

标签:语句,username,尽量避免,t2,查询,SQL,WHERE,SELECT
From: https://www.cnblogs.com/hkwJsxl/p/16884773.html

相关文章

  • mysql 优化分表 存储引擎
    分表--创建key分表createtableuser1(uidintauto_incrementprimarykey,unamevarchar(20)notnull)engine=myisamdefaultcharset=utf8partitionbykey(ui......
  • MySQL操作练习:library
    查询前请创建对应的数据库和表:createdatabases`library`;uselibrary;createtablebook(bnochar(20)notnullprimarykey,bnamevarchar(50),aut......
  • css媒体查询边界值是否包含?
    答案:对于min-width,max-width 这种,是左右边界值都包含的。如果下一个写的媒体查询的区间包含了上一个的区间,以后写的为准,覆盖前一个,所以顺序也会影响媒体查询。例如......
  • 查看SQL锁表
    1.查询锁表信息selectrequest_session_idAS'锁表id',OBJECT_NAME(resource_associated_entity_id)AS'表名'fromsys.dm_tran_lockswhereresource_type='OBJECT'2......
  • 22-MySQL架构与性能优化
    架构:C/SConnectors:连接器可供NativeCAPI、JDBC、ODBC、NET、PHP、Perl、Python、Ruby、Cobol等连接mysql;站在编程角度可以理解为连入数据库管理系统的驱动,站在mysql角度......
  • SAS - SAS and SQL 对应
    1.组内排序SQL:procsql;createtabledata2asselect*,row_number()over(partitionbyid,class,dateorderbytime)asrankfromdata;run;SAS:da......
  • 银河麒麟V10在线安装Postgresql步骤
    参考资料https://blog.csdn.net/u010430471/article/details/81663248https://blog.csdn.net/qq_41619524/article/details/120178542关闭防火墙https://blog.csdn.n......
  • Oracle 19C学习 - 19. MERGE语句
    Merge语句的作用Merge语句可以根据不同条件,获取插入、更新、删除数据表中的行,然后从一个或者多个数据源头对表进行更新或向表中插入行。Merge语句的语法MERGEINTO表名......
  • Mysql中REPLACE INTO用法,判断数据是否存在,如果不存在,则插入,如果存在,则先删除此行数据,
    MySQLreplaceinto用法在向表中插入数据的时候,经常遇到这样的情况:1.首先判断数据是否存在;2.如果不存在,则插入;3.如果存在,则先删除后再插入新数据行。MySQL中实现这......
  • mysql系列14---docker容器下mysql数据库还原与备份
    一、数据库定时备份1、编写mysql在docker容器中备份的shell脚本:#!/bin/bash#docker启动的mysql备份mysql_user="root"#数据库密码,注意自行修改mysql_password="1234......