学编程 ❀(๑╯◡╰๑)❀ 就上soxunxi.cn!这里有CMS,CSS,NET,PHP,Linux,HTML,JAVA,MySQL,Python等教程.
当前位置: MySQL > MySQL优化经常使用要领【MySQL教程】,MySQL

1. 拔取最实用的字段属性
表中字段的宽度设得只管小:char 的上限为 255 字节(牢固占用空间),varchar 的上限 65535 字节(现实占用空间),text 的上限为 65535。
只管把字段设置为 NOT NULL,实行查询的时刻,数据库不用去比较 NULL 值。

2. 运用衔接(JOIN)来替代子查询 (Sub-Queries)
衔接(JOIN)之所以更有效力一些,是因为 MySQL 不须要在内存中竖立临时表来完成这个逻辑上的须要两个步骤的查询事情(团结查询的前提加索引更快)。

3. 运用团结 (UNION) 来替代手动竖立的临时表
把须要运用临时表的两条或更多的 SELECT 查询兼并的一个查询中。
SELECT Name, Phone FROM client UNION SELECT Name, BirthDate FROM author UNION SELECT Name, Supplier FROM product;

4. 事件
只管我们能够运用子查询(Sub-Queries)、衔接(JOIN)和团结(UNION)来竖立林林总总的查询,但不是一切的数据库操纵都能够只用一条或少数几条 SQL 语句就能够完成的。更多的时刻是须要用到一系列的语句来完成某种事情。
作用是:要么语句块中每条语句都操纵胜利,要么都失利。换句话说,就是能够坚持数据库中数据的一致性和完整性。事物以 BEGIN 关键字最先,COMMIT 关键字完毕。在这之间的一条 SQL 操纵失利,那末,ROLLBACK 敕令就能够把数据库恢复到 BEGIN 最先之前的状况。

5. 锁定表
只管事件是保护数据库完整性的一个非常好的要领,但却因为它的独占性,有时会影响数据库的机能,尤其是在很大的运用体系中。因为在事件实行的历程当中,数据库将会被锁定,因而别的的用户要求只能临时守候直到该事件完毕。
LOCK TABLE inventory WRITE
SELECT Quantity FROM inventory
WHEREItem='book';
...
UPDATE inventory SET Quantity=11
WHEREItem='book';
UNLOCK TABLES
这里,我们用一个 SELECT 语句掏出初始数据,经由历程一些盘算,用 UPDATE 语句将新值更新到表中。包括有 WRITE 关键字的 LOCK TABLE 语句能够保证在 UNLOCK TABLES 敕令被实行之前,不会有别的的接见来对 inventory 举行插进去、更新或许删除的操纵。

6、运用外键
锁定表的要领能够保护数据的完整性,然则它却不能保证数据的关联性。这个时刻我们就能够运用外键。比方,外键能够保证每一条贩卖纪录都指向某一个存在的客户。在这里,外键能够把 customerinfo 表中的 CustomerID 映射到 salesinfo 表中 CustomerID,任何一条没有正当 CustomerID 的纪录都不会被更新或插进去到 salesinfo 中。

CREATE TABLE customerinfo 
( 
CustomerID INT NOT NULL , 
PRIMARY KEY ( CustomerID ) 
) TYPE = INNODB; 
CREATE TABLE salesinfo 
( 
SalesID INT NOT NULL, 
CustomerID INT NOT NULL, 
PRIMARY KEY(CustomerID, SalesID), 
FOREIGN KEY (CustomerID) REFERENCES customerinfo 
(CustomerID) ON DELETECASCADE 
) TYPE = INNODB;

注重例子中的参数 “ON DELETE CASCADE”。该参数保证当 customerinfo 表中的一条客户纪录被删除的时刻,salesinfo 表中一切与该客户相干的纪录也会被自动删除。假如要在 MySQL 中运用外键,一定要记住在竖立表的时刻将表的范例定义为事件平安表 InnoDB 范例。该范例不是 MySQL 表的默许范例。定义的要领是在 CREATE TABLE 语句中加上 TYPE=INNODB。

7. 运用索引
查询语句当中包括有 MAX (), MIN () 和 ORDERBY 这些敕令的时刻,机能进步更加显著。
索引应竖立在那些将用于 JOIN, WHERE 推断和 ORDER BY 排序的字段上。只管不要对数据库中某个含有大批反复的值的字段竖立索引。关于一个 ENUM 范例的字段来讲,涌现大批反复值是很有能够的状况,比方 customerinfo 中的 “province”.. 字段,在如许的字段上竖立索引将不会有什么协助;相反,另有能够下降数据库的机能。

8. 优化的查询语句
SELECT FROM order WHERE YEAR(OrderDate)<2001;
SELECT FROM order WHERE OrderDate<"2001-01-01";

SELECT FROM inventory WHERE Amount/7<24;
SELECT FROM inventory WHERE Amount<24*7;
防止在查询中让 MySQL 举行自动范例转换,因为转换历程也会使索引变得不起作用。

更多SQL的相干技术文章,请接见SQL教程栏目举行进修!

以上就是MySQL优化经常使用要领的细致内容,更多请关注ki4网别的相干文章!

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

分享到:
赞(0) 打赏

支付宝扫一扫打赏

微信扫一扫打赏

标签:

上一篇:

下一篇:

相关推荐

0 条评论关于"MySQL优化经常使用要领【MySQL教程】,MySQL"

最新评论

    暂无留言哦~~

博客简介

看古风美女插画Cos小姐姐,素材合集图集打包下载:炫龙网,好看二次元插画应有尽有,唯美小姐姐等你来。

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

服务热线:
 

 QQ在线交流

 旺旺在线