一. 查询缓存

  1.开启缓存

[root@xuegod64 etc]# vim my.cnf

  图片 1

    设置了缓存开启,缓存最大限制128M,重启服务后,再次查询

--  开启查询缓存后
 SHOW VARIABLES LIKE '%query_cache%';

    图片 2

  2 测试缓存
  
现在是缓存2次,命中一次
  图片 3

SELECT ID FROM  User1 WHERE ID=2
SELECT Age FROM  User1 WHERE ID=2

  上面是二个查询sql语句,此时缓存数是4,如下图所示:

  图片 4

--再次查询上面相同的sql语句,此时命中率结果为3,缓存数还是4
SELECT ID FROM  User1 WHERE ID=2
SELECT Age FROM  User1 WHERE ID=2

  图片 5

--查询相同的sql语句,条件值大小写不一样
SELECT ID FROM  User1 WHERE `Name`='Abc'
SELECT ID FROM  User1 WHERE `Name`='aBc'

  此时缓存数是6,说明缓存区分where条件值的大小写。同样也会区分sql关键词的大小写。如下图所示:
  图片 6
  设置好query_cache_size值后,重新启动服务初始化时:query_cache_size==Qcache_free_memory的值。
  缓存的命中率公式为: Qcache_hits/(Qcache_hits+Qcache_inserts)。

  总结:根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。但开起缓存,前提条件是你有大量的相同或相似的查询,而很少改变表里的数据,否则没有必要使用此功能。

转自:http://www.maomao365.com/?p=6642

约束

摘要:
下文讲述使用select查询语句建立新的数据表的方法分享

非空约束 –NN,ont null constraint

---1 mysql 
   create table `新数据表名`
     select  *  from `旧数据表名`;
--------------------------------
---2 oracle
  create table 新数据表名 as select * from 旧数据表名
--------------------------------
--3 mssql 
  select * into [新数据表名] from [旧数据表名]

必须填写数据不能为空

 

–指定表 Student
添加名为NN_Student_sClassId非空约束(指定列名sClassId),括号输入表达式

alter table Student add constraint NN_Student_sClassId check(sClassId
is not null)

 

主键约束 –PK,primary key
constraint

唯一且不为空

–指定表 Student 添加名为PK_Student_sId主键约束(指定列名sId)

alter table Student add constraint PK_Student_sId primary key(sId)

 

唯一约束 –UQ,unique constraint

唯一,允许为空,但是同样的数据只能出现一次

–指定表 Student 添加名为UQ_Student_sName唯一约束(指定列名sName)

alter table Student add constraint UQ_Student_sName unique(sName)

    

默认约束 –DF,default
constraint

发表评论

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