https://blog.csdn.net/weixin_40161708/article/details/78820710
索引
1).概念
索引:是针对数据所建立的目录
作用:可以加快查询速度
负面影响:降低了增删改的速度。
2).案例
设有新闻表15列,10列上有索引,共500W行数据,如何快速导入?
1.把空表的索引全部删除
2.导入数据
3.数据导入完毕后,集中建索引。
3).索引的创建原则:
1.不要过度索引
2.在where条件最频繁的列上加
3.尽量索引散列值,过于集中的值加索引意义不大。
4).索引的类型
普通索引:index仅仅是加快查询速度。
唯一索引:unique index 行上的值不能重复
主键索引:primary key 不能重复
主键必唯一,但是唯一的索引不一定是主键。
一张表上,只能有一个主键,但是可以用一个或多个唯一索引
全文索引:fulltext index
5).查看索引
show index from 表名
6).建立索引
Alter table 表名 add index/unique/fulltext[索引名](列名)
Alter table 表名 add primary key (列名) //不要加索引名,因为主键只有一个
id int primary key auto_increment 创建一个递增的主键id;
7).删除索引
删除非主键索引:Alter table 表名 drop index 索引名;
删除主键:alter table 表名 drop primary key
2 全文索引
1).用法
Match(全文索引名)against('keyword');
切记 只有>=3行的数据进行搜索才会有结果!
以前在Myisam数据库引擎中支持全文本搜索,但是现在5.5版本的innodb也开始支持了
create table 列名(
)engine = myisam;
2).关于全文索引的停止词
全文索引不针对非常频繁的词做索引,
如this,is,you,my等等
全文索引:在mysql的默认情况下,对于中文意义不大。
因为英文有空格,标点符号来拆成单词,进而对单词进行索引,
而对于中文,没有空格来隔开单词,mysql无法识别每个中文词。
3 存储过程
1).概念
类似于函数,就是把一段代码封装起来,当要执行这一段代码的时候,可以通过该存储过程来实现
在封装的语句体里面,可以用if/else,case,while等控制结构,可以进行sql编程
2).查看现有的存储过程
show procedure status
3).删除存储过程
Drop procedure 存储过程的名字
4).调用存储过程
Call 存储过程名字();
-->第1个存储过程,体会“封装sql”
create procedure p1()
begin
select * from g;
end$
-->第2个存储过程,体会“参数”
create procedure p1(n int)
begin
select * from g where num > n;
end$
-->第3个存储过程,体会“控制结构”
create procedure p1(n int,j char(1))
begin
if j = 'h' then
select * from g where num > n;
else
select * from g where num < n;
end if;
end$
-->计算1->n的和
create procedure p4(n smallint)
begin
declare i int;
declare s int;
set i = 1;
set s = 0;
while i <= n do
set s = s + i;
set i = i + 1;
end while;
select s;
end$
-->在mysql中,存储过程和函数的区别:
一个是名称不同,
二个就是存储过程没有返回值.
---------------------
作者:苗先森
来源:CSDN
原文:https://blog.csdn.net/weixin_40161708/article/details/78820710
版权声明:本文为博主原创文章,转载请附上博文链接!