数据库有关总结

1.     SQL优化的原则: 尽早,高效地过滤数据,避免无效的运算.数据库

查询数据量大的数据尽可能避免用join 宁肯一次将一张表的数据查出来再用这些数据去作查询也不要用过多的使用join 尽可能分红屡次查询来作数据库设计

2.     索引优化

用户没法看到索引.spa

更新带索引的表花更长的时间,所以要仅在常被搜索的列(以及表)上建立索引.设计

若是您但愿以降序索引某个列中的值,您能够在列名称以后添加保留字 DESCorm

CREATE INDEX PersonIndex ON Person (LastName DESC)  排序

咱们随机向里面插入了10000条记录,其中有一条:5555, admin。在查找username="admin"的记录 SELECT * FROM mytable WHERE username='admin';时,若是在username上已经创建了索引,MySQL无须任何扫描,即准确可找到该记录。相反,MySQL会扫描全部记录,即要查询10000条记录。索引

MySQL索引类型包括:ip

  (1)普通索引INDEXci

  这是最基本的索引,它没有任何限制

  (2)惟一索引 UNIQUE INDEX

  它与前面的普通索引相似,不一样的就是:索引列的值必须惟一,但容许有空值。若是是组合索引,则列值的组合必须惟一。

  (3)主键索引 PRIMARY KEY

  它是一种特殊的惟一索引,不容许有空值。通常是在建表的时候同时建立主键索引

  (4)组合索引

MySQL组合索引“最左前缀”的结果。简单的理解就是只从最左面的开始组合

  (5)创建索引的时机

  到这里咱们已经学会了创建索引,那么咱们须要在什么状况下创建索引呢?通常来讲,WHEREJOIN中出现的列须要创建索引,但也不彻底如此,由于MySQL只对<<==>>=BETWEENIN,以及某些时候的LIKE才会使用索引

6)索引的不足之处

◆虽然索引大大提升了查询速度,同时却会下降更新表的速度,如对表进行INSERTUPDATEDELETE。由于更新表时,MySQL不只要保存数据,还要保存一下索引文件。

◆创建索引会占用磁盘空间的索引文件。通常状况这个问题不太严重,但若是你在一个大表上建立了多种组合索引,索引文件的会膨胀很快。

7)使用索引的注意事项

使用索引时,有如下一些技巧和注意事项:

◆索引不会包含有NULL值的列

只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。因此咱们在数据库设计时不要让字段的默认值为NULL

◆使用短索引

对串列进行索引,若是可能应该指定一个前缀长度。例如,若是有一个CHAR(255)的列,若是在前10个或20个字符内,多数值是唯一的,那么就不要对整个列进行索引。短索引不只能够提升查询速度并且能够节省磁盘空间和I/O操做。

◆索引列排序

MySQL查询只使用一个索引,所以若是where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。所以数据库默认排序能够符合要求的状况下不要使用排序操做;尽可能不要包含多个列的排序,若是须要最好给这些列建立复合索引。

like语句操做

通常状况下不鼓励使用like操做,若是非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可使用索引。

不要在列上进行运算

select * from users where YEAR(adddate)<2007; 

将在每一个行上进行运算,这将致使索引失效而进行全表扫描,所以咱们能够改为

select * from users where adddate<‘2007-01-01’;   

◆不使用NOT IN<>操做

————————————————

版权声明:本文为CSDN博主「@溪竹」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接及本声明

3.     基本操做:

a)      Max(): SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders

结果集相似于:

LargestOrderPrice

2000

b)   Insert into插入多行:

INSERTINTOstudentVALUES(1,"qf",3),(2,"lap",4),(3,"qfa",8)    //一开始同时执行多条insert into操做,发现会报错,是数据库软件的问题.

c)      Varchar(255):表示最大长度为255个字符(255个字节),C++char的长度是一个字节

相关文章
相关标签/搜索