Sql语句优化及存储过程

1.  怎么加快查询速度,优化查询效率,主要原则就是应尽量避免全表扫描,应该考虑在where及order by 涉及的列上建立索引。
2.:一个表的索引不是越多越好,也没有一个具体的数字,根据以往的经验,一个表的索引最多不能超过6个,因为索引越多,对update和insert操作也会有性能的影响,涉及到索引的新建和重建操作。
3.索引建立
1.多数查询经常使用的列;
2.很少进行修改操作的列;
3.索引需要建立在数据差异化大的列上
4.sql语句模型结构优化指导
 1. ORDER BY + LIMIT组合的索引优化
   如果一个SQL语句形如:SELECT [column1],[column2],…. FROM [TABLE] ORDER BY [sort] LIMIT [offset],[LIMIT];
这个SQL语句优化比较简单,在[sort]这个栏位上建立索引即可。
2.LIKE语句优化
SELECT id FROM A WHERE name like ‘%abc%’
 由于abc前面用了“%”,因此该查询必然走全表查询,除非必要,否则不要在关键词前加%
 优化成如下
SELECT id FROM A WHERE name like ‘abc%’
3.where子句使用 != 或 <> 操作符优化
SQL:SELECT id FROM A WHERE ID != 5 优化成:SELECT id FROM A WHERE ID>5 OR ID<5
4.LIMIT分页优化
当偏移量特别大时,limit效率会非常低
    SELECT id FROM A LIMIT 1000,10 很快

SELECT id FROM A LIMIT 90000,10 很慢
方法一:select id from A order by id limit 90000,10; 很快,0.04秒就OK。 因为用了id主键做索引当然快
5.视图操作
重点:视图不能加条件sql加条件判断推荐使用存储过程
1.创建视图 create view 视图名 as sql语句‘
2.删除视图 drop view 视图名
3.查看创建的视图
sqlyog
在这里插入图片描述
navicat
在这里插入图片描述
4.修改视图sql
create or replace view as sql语句
6.储存过程操作
1.创建储存过程:
1.DELIMITER //
2.CREATE PROCEDURE 过程名字(IN | OUT | INOUT)
3.BEGIN
4. SQL体
5.END//
方法参数
  1. IN 向过程里传参
    2. OUT:过程向外传参值
    3, INOUT:in and out
   在sql中写 DELIMITER// 相当于分辨是否是SQL 还是在创建储存过程,最后以END//结束还可以写%%分辨不是必须//
 调用储存过程
CALL 过程名(参数赋值)
删除储存过程
DROP PROCEDURE 过程名
将原有表的数据传到其他数据库的表
ss为新表名 hrms为旧数据库名.旧表名
CREATE ss AS SELECT * FROM hrms.management

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值