索引和视图

索引优点:
1,一般是作用于where子句所给出的条件相匹配的行
一是在关联操作中与其他数据表所匹配的行。
2,对于使用mix() 和max()函数的查询的列
3,经常使用order by 和group by的列
4,索引可以加快查询速度,不用扫描整个表
索引缺点
1,索引虽然加快查询的速度,但是会降低写入操作,比如插入,修改,删除数据
2,索引要占据磁盘空间,索引越多占据空间越大,
 
对myisam表来说,大量索引一个数据表可能使索引文件比数据文件更快达到它的尺寸上限
对innodb来说,全部innodb数据表分享同一个存储空间,添加索引会是表空间用于存储的空间变小
 
散列索引对于“=”和“<=>”操作进行匹配时速度极快,但是对于范围查找和比较查找比较慢
 
B树索引对于 <,<=,>,>=,=<>,!= 和 between操作进行的查询效率较高,而且对于纯字符串开头,而不是通配符开头的,B树可以使用like操作符进行模式匹配
 
慢查询
mysqldumpsqlow
 
1,主键索引
2,唯一索引
3,常规索引
 
4,全文索引
创建索引,默认是asc排序,使用btree
create  index  index_name   on  tbl_name (column  asc{default}|desc) 
如果相关表已经使用Memory引擎建立,则使用hash索引
create index  index_name  using btree|hash   on   on  tbl_name (column  asc)
创建复合索引
create  index  index_name  on tbl_name  (column1,column2)
 
create table carts(
cartid int not null,
userid,
bookid,
number,
primary key (cartid),
key index_name(userid,bookid)
);
唯一索引
create  unique  index  index_name  on tbl_name  (column)
可选项:unique |fulltext | spatial
create table cate(
    cateid int not null auto_increment primary key,
    catename varchar not null unique
    catemenu varchar not null fulltext
);
使用alert语句添加索引
alert table tbl_name  add index index_name using btree  (column)
 
创建表时添加索引
create  table tbl_name(
column1  int  not null primary key,
column2   int not null,
column3    smallint not null,
index  index_name(column)
unique  indxe index_name using hash (column2,column3)
)
全文索引
全文搜索同MATCH()函数一起执行。 

mysql> CREATE TABLE articles ( 

 id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, 

 title VARCHAR(200), 

 body TEXT, 

FULLTEXT (title,body) 

); 
1,任何过于短的词都会被忽略。 全文搜索所能找到的词的默认最小长度为 4个字符。 
2,停止字中的词会被忽略。禁用词就是一个像“the” 或“some” 这样过于平常而被认为是不具语义的词。存在一个内置的停止字, 但它可以通过用户自定义列表被改写。 
3,单词  出现在50%的行中。 它被列入停止字。
select book_name ,price from books where Match(column) against("string"); 
 
drop index  index_name on tbl_name
 
 
视图
视图是一种虚拟表,他的行为和数据表一样,但是不包含真正的数据。
创建视图语法
create view  <view name>[<column list>]   as   <table expression>  [with [cassaded | local ] check option]
创建视图
create  view  view_name  as  select  column1,column2  from tbl_name  where   xxx>xx
创建视图时指定列
create  view  view1 (va1,va2,va3)  as  select  va1,va2,va3 from tbl  where  va1<num;
创建索引时可以使用表联接
creaet  view  vst as select id,name,date,score category from grade_event inner  join  score  inner join  stu  on  grade_event.id=score.event_id and score.id =stu.id
创建索引时可以把数学运行放到视图的一个 列中
create    view view_demo  select  name,   birth,death timstampdiff(year,birth ,death) as age from tbl
posted @   fsl  阅读(4893)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示