浅说MySQL优化方法「终于解决」

浅说MySQL优化方法「终于解决」1.优化思路 在数据库的优化上我们有两个方面,一方面是安全,另一方面则是性能. 安全 ,就是要保证数据的可持续性; 性能,则说的就是数据的高性能访问; 2.优化方法 1)选取最适用的字段属性 一般来…

浅说MySQL优化方法

在数据库的优化上我们有两个方面,一方面是安全,另一方面则是性能.

        安全 ,就是要保证数据的可持续性;

        性能,则说的就是数据的高性能访问;

2.优化方法

        1)选取最适用的字段属性

            一般来说,数据库中的表越小,查询执行的效率越快,因此我们可以在创建表的时候将字段竟可能设定的小一点,这样增加了数据库的空间.

            另一个方法则是在可能的情况下,尽量把字段设置为非空,这样查询的时候就不用去比较NULL值,从而提升查询速度

        2)使用连接查询代替子查询

            使用子查询的话数据库需要在内存中先创建出临时表,然后再把临时表用在另一个查询上,子查询可以一次性完成很多逻辑上多个步骤才能完成的SQL操作,这样查询速度不是很快,而采用连接查询的话,MYSQL不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作.

        3)使用联合来代替手动创建的临时表

            使用UNION查询,可以把 需要使用临时表的两条或更多的 SELECT 查询合并的一个查询中。在客户端的查询会话结束的时候,临时表会被自动删除,从而保证数据库整齐、高效。使用 UNION 来创建查询的时候,我们只需要用 UNION作为关键字把多个 SELECT 语句连接起来就可以了,要注意的是所有 SELECT 语句中的字段数目要想同 .

SELECT * FROM t_address UNION SELECT * FROM t_area;

        4)事务

            当这个语句块中的某一条语句运行出错的时候,整个语句块的操作就会变得不确定起来。设想一下,要把某个数据同时插入两个相关联的表中,可能会出现这样的情况:第一个表中成功更新后,数据库突然出现意外状况,造成第二个表中的操作没有完成,这样,就会造成数据的不完整,甚至会破坏数据库中的数据。要避免这种情况,就应该使用事务,它的作用是:要么语句块中每条语句都操作成功,要么都失败。换句话说,就是可以保持数据库中数据的一致性和完整性。事物以BEGIN 关键字开始,COMMIT关键字结束。在这之间的一条SQL操作失败,那么,ROLLBACK命令就可以把数据库恢复到BEGIN开始之前的状态。 
BEGIN; 
INSERT INTO salesinfo SET CustomerID=14; 
UPDATE inventory SET Quantity=11 
WHERE item=”book”; 
COMMIT; 
事务的另一个重要作用是当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方法来为用户提供一种安全的访问方式,这样可以保证用户的操作不被其它的用户所干扰。 

        5)使用外键

            外键可以用来维护两表之间的一致性,通过设置外键和其他表建立关联关系,即保证数据的关联性,如果要在 MySQL 中使用外键,一定要记住在创建表的时候将表的类型定义为事务安全表 InnoDB类型。该类型不是 MySQL 表的默认类型。定义的方法是在 CREATE TABLE 语句中加上 TYPE=INNODB。

        6)使用索引

        索引是提高数据库性能的常用方法,它可以令数据库服务器以比没有索引快得多的速度检索特定的行,尤其是在查询语句当中包含有MAX(), MIN()和ORDERBY这些命令的时候,性能提高更为明显。 一般说来,索引应建立在那些将用于JOIN, WHERE判断和ORDER BY排序的字段上。尽量不要对数据库中某个含有大量重复的值的字段建立索引。

        7)优化查询语句

        绝大多数的情况下,使用索引可以提高查询的速度,但是如果SQL语句使用不恰当的话,索引将无法更好的发挥它的作用.

            应该注意一下几点 : 

                1. 最好是在相同的类型字段之间进行比较

             如INT类型建议不要和BGINT类型的比较,但也有特殊情况,比如,char和varchar类型字段大小相等时也可以将它们进行比较

                2. 在建有索引的字段上尽量不要使用函数进行操作

                3.避免在查询中让数据库进行自动类型转换,这样也会让索引变得不起作用

                 4. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

                   5. 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。

                    6. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描

                    7. 应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描

                    8. 应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描

这是小喵这次的总结,你Get到啦吗?

(^_^)~喵~!!

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9205.html

(0)
上一篇 2023-02-13 14:00
下一篇 2023-02-13

相关推荐

  • Redis基本操作进阶篇学习-「终于解决」

    Redis基本操作进阶篇学习-「终于解决」Redis中SORT命令可以对列表类型、集合类型以及有序集合类型键进行排序,并返回显示排序的结果,但是不会对原有数据进行修改。

    2023-05-03
    158
  • Python字符串转数字方法

    Python字符串转数字方法在Python中,我们经常需要将一个字符串转换成数字,这在日常编程工作中是非常常见的操作,因为很多时候我们需要做一些数学运算,而这些运算需要进行数字计算。而Python作为一门支持多种数据类型的编程语言,提供了很多字符串转数字的方法,通过本篇文章,我们将详细地介绍这些方法。

    2024-09-10
    20
  • Spyder与Python的关系

    Spyder与Python的关系在今天的科技时代,计算机编程成为了一个火热的领域,而Python被誉为编程界的“瑞士军刀”,成为了各个领域里必不可少的编程语言之一。而对于Python开发者来说,一款高效的IDE是必不可少的,这里介绍一下Spyder这个Python IDE。

    2024-07-23
    32
  • 关于mysql索引的数据结构有哪些_什么是索引

    关于mysql索引的数据结构有哪些_什么是索引索引的数据结构 1、为什么使用索引 概念: 索引是存储索引用于快速找到数据记录的一种数据结构,就好比一本书的目录部分,通过目录中对应的文章的页码,便可以快速定位到需要的文章,Mysql 中也是一样的道

    2023-05-14
    159
  • Hadoop(四)C#操作Hbase「建议收藏」

    Hadoop(四)C#操作Hbase「建议收藏」Hbase Hbase是一种NoSql模式的数据库,采用了列式存储。而采用了列存储天然具备以下优势: 可只查涉及的列,且列可作为索引,相对高效 针对某一列的聚合及其方便 同一列的数据类型一致,方便压缩

    2023-05-14
    148
  • 如何选择数据库服务器,参考这几点让你不再被坑「建议收藏」

    如何选择数据库服务器,参考这几点让你不再被坑「建议收藏」随着互联网业务的越来越成熟,各种中小型企业投入的运营成本也越来越高,运营时间随着日积月累的增加,那些以数据库为主要支撑的系统应用,在发展成一定规模之后,对服务器硬件的设备要求就更加苛刻了,一旦服务器…

    2023-03-25
    151
  • 基于Python的BinaryTree实现

    基于Python的BinaryTree实现二叉树是一种非常常见且重要的数据结构,它广泛应用于计算机科学和算法的设计中。其中,二叉树所用的数据结构关系比较简单,适合各类算法的实现。这篇文章将会介绍基于Python的BinaryTree实现,它为我们深入了解二叉树的工作方式和如何应用算法提供了一个很好的起点。

    2024-06-15
    49
  • 袋鼠云数据湖平台「DataLake」,存储全量数据,打造数字底座「终于解决」

    袋鼠云数据湖平台「DataLake」,存储全量数据,打造数字底座「终于解决」一、什么是数据湖? 在探讨数据湖技术或如何构建数据湖之前,我们需要先明确,什么是数据湖? 数据湖的起源,应该追溯到2010年10月。基于对半结构化、非结构化存储的需求,同时为了推广自家的Pentaho

    2023-06-17
    164

发表回复

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