`
luhantu
  • 浏览: 203489 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mysql 优化知识备注

 
阅读更多

1.批量插入数据

如果有需要插入100000条数据,那么就需要有100000条insert语句,每一句都需要提交到关系引擎那里去解析,优化,然后才能够到达存储引擎做真的插入工作。上述所说的同时插入多条就是一种优化。

2.truncate table

   比delete速度要更快一些,但truncate删除后不记录mysql日志,不可以恢复数据

  如果没有外键关联,innodb执行truncate是先drop table(原始表),再创建一个跟原始表一样空表,速度要远远快于delete逐条删除行记录。

  如果表有外键关联,truncate table将会报错。如果外键指定级联删除(delete cascade),使用delete关联的子表也会会被删除所有表数据。

  如果使用innodb_file_per_table参数,truncate table 能重新利用释放的硬盘空间,在InnoDB Plugin中,truncate table为自动回收,如果不是用InnoDB Plugin,那么需要使用optimize table来优化表,释放空间。

  truncate table删除表后,optimize table尤其重要,特别是大数据数据库,表空间可以得到释放!

  TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。

  DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

  TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。

  如果要删除表定义及其数据,请使用 DROP TABLE 语句。

auto_increment计数器在truncate table后会重置为0

3.一个大的 DELETE 或 INSERT 操作,要非常小心,因为这两个操作是会锁表的,表一锁住,其他操作就进不来了。因此,我们要交给DBA去拆分,重整数据库策略,比如限制处理1000条。

MySQL官方手 册得知删除数据的速度和创建的索引数量是成正比的。所以在超大型数据库中,删除时处理好索引关系非常重要。推荐的折中方法:在删除数据之前删除这那几个索引,然后删除其中无用 数据,删除完成后重新创建索引。

4.更新多条记录 

Update score  

  SET change_type = CASE id  

    WHEN 1 THEN 'value1'  

    WHEN 2 THEN 'value2'  

    WHEN 3 THEN 'value3'  

  END  

WHERE id IN (1,2,3)  

5.REPLACE语句 如果一个表在一个字段上建立了唯一索引,当向这个表中使用已经存在的键值插入一条记录,将会抛出一个主键冲突的错误。如果我们想用新记录的值来覆盖原来的记录值时,就可以使用REPLACE语句。

使用REPLACE插入记录时,如果记录不重复(或往表里插新记录),REPLACE功能与INSERT一样,如果存在重复记录,REPLACE就使用新记录的值来替换原来的记录值。

使用REPLACE的最大好处就是可以将DELETE和INSERT合二为一,形成一个原子操作。这样就可以不必考虑同时使用DELETE和INSERT时添加事务等复杂操作了。

在使用REPLACE时,表中必须有唯一有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。

UPDATE在没有匹配记录时什么都不做,而REPLACE在有重复记录时更新,在没有重复记录时插入。

UPDATE可以选择性地更新记录的一部分字段。而REPLACE在发现有重复记录时就将这条记录彻底删除,再插入新的记录。也就是说,将所有的字段都更新了。

参考文献:MySQL优化系列(一)--库与表基本操作以及数据增删改

分享到:
评论

相关推荐

    MySQL 5.7 Reference Manual

    MySQL 5.7参考手册详细记录了MySQL 5.7版本至5.7.11版本的所有特性、安装指导、性能优化以及数据库管理的各个方面。该手册是数据库管理员和开发者在使用MySQL数据库系统时的权威参考资料。 ### 标题知识点解析 - *...

    MySQL主从复制部署实施文档

    ### MySQL主从复制部署实施知识点 #### 一、MySQL主从复制概述 MySQL主从复制是一种数据复制技术,它能够实现在多个服务器之间复制数据。通常包括一个主服务器(Master)和一个或多个从服务器(Slave)。在主从复制...

    Mysql中返回一个数据库的所有表名,列名数据类型备注

    以下将详细解释这些知识点及其应用场景。 1. **查询表名** 使用`SHOW DATABASES;`命令可以列出当前MySQL服务器上的所有数据库。若要切换到特定数据库,可以使用`USE 数据库名;`命令。然后,可以使用`SHOW TABLES;`...

    Mysql数据库文档生成工具(含使用说明)

    以下是一些关于MySQL文档生成工具及其相关知识点的详细说明: 1. **数据库设计文档**:数据库设计文档是记录数据库结构、关系、约束和逻辑流程的文件,包括表的定义、字段信息、索引、外键关系等。在项目开发中,它...

    MySQL从入门到实战学习教程之3表操作.pptx

    MySQL表操作知识点 本篇文章主要讲解MySQL表操作的基本知识,涵盖表结构、字段类型、关系模型等方面的内容。 表结构 在MySQL中,一个表对应一个文件,每个文件里存放数据的表结构。表结构可以分为表结构和数据两...

    PHP+Mysql班费查询课程设计

    在“PHP+Mysql班费查询...通过这个课程设计,学生不仅能掌握PHP和MySQL的基础知识,还能了解到Web应用开发的实践过程,包括需求分析、数据库设计、编程实现、测试和维护等环节,这对他们的专业技能提升具有重要意义。

    通讯录系统mysql数据库设计.zip

    以上就是关于“通讯录系统mysql数据库设计”的主要知识点,涵盖了数据表设计、关系模型、字段选择以及性能优化等多个方面。在实际开发过程中,还需结合业务需求和用户体验,进行更细致的规划和调整。

    mysql导出表的字段和相关属性的步骤方法

    在MySQL数据库管理中,有时我们需要将表的结构信息导出,包括字段名、数据类型、长度、是否可为空、默认值以及备注等属性,以便于文档化或迁移数据。以下是一个详细步骤,指导如何完成这一任务: 1. **确定目标...

    数据库--MySQL1

    本文将深入探讨MySQL数据库的基础知识,尤其是根据提供的标题和描述内容,我们将关注表结构设计和数据库创建。 首先,创建数据库是所有操作的起点。在MySQL中,可以使用`CREATE DATABASE`语句来创建一个新的数据库...

    基于mysql数据库的西瓜育种自动化综合管理系统的建立.pdf

    总结来说,基于MySQL数据库的西瓜育种自动化综合管理系统是一款集数据录入、查询、统计和分析于一体的工具,它整合了现代信息技术与西瓜育种的专业知识,大大提升了育种工作的效率和管理水平。对于其他类似的农业...

    MySQL上机考试题(习题,答案).docx

    ### MySQL上机考试知识点解析 #### 一、题目背景与要求概述 本次MySQL上机考试主要针对的是在事业编制内的专业技术人员,旨在考察其对于MySQL数据库管理系统的掌握程度。题目包含建表、插入数据以及一些基本操作等...

    个自定义仪表盘,有详细备注, 刻度可以以10移动

    下面我们将深入探讨相关知识点。 首先,**仪表盘设计**是关键,一个好的仪表盘应该清晰、直观地展示关键性能指标(KPIs)。在这个项目中,自定义功能意味着用户可以根据业务需求选择显示的数据类型、范围以及刻度...

    关于某图书馆管理系统地Mysql设计资料报告材料.docx

    - **存储结构**: 数据库对象(表、索引等)和日志文件应分开存储,以优化性能。 - **备份策略**: 设计合理的备份策略,确保数据的安全性和可用性。 #### 六、数据库建立 本部分涉及数据库的具体实现,包括表结构的...

    代码生成器知识.pdf

    《代码生成器知识详解》 代码生成器是程序员的得力助手,它能极大地提高软件项目的开发效率,通过自动生成ASP.NET页面及后台代码,基于面向服务的架构(SOA),使得开发工作更加智能化。本篇文章将深入探讨代码生成...

    2021-2022计算机二级等级考试试题及答案No.15479.docx

    - **知识点**: `mysql_connect()`用于建立非持久连接,可以使用`mysql_close()`关闭连接;而`mysql_pconnect()`则用于建立持久连接,也可以使用`mysql_close()`尝试关闭连接,但在PHP中通常无效。 - **扩展解释**: ...

    2021-2022计算机二级等级考试试题及答案No.11481.docx

    - **知识点**: MySQL安装后默认创建的用户数量。 - **解析**: MySQL安装后默认会创建一个超级管理员用户(root),用于管理和访问数据库系统。 #### 15. 数组元素的引用 - **知识点**: 对数组元素的正确引用方式。 -...

    2021-2022计算机二级等级考试试题及答案No.11250.docx

    - **知识点**:Access 2003支持十一种数据类型,包括文本、备注、数字、日期/时间、货币、是/否、OLE对象、超级链接、查阅向导、附件和计算字段。 - **应用场景**:在设计Access数据库时,根据数据的性质选择合适的...

    MySQL数据库项目/便签

    在设计一个基于MySQL数据库的便签应用时,我们需要考虑如何有效地存储和管理用户的各种便签信息,同时满足功能性和创新性的需求。以下是根据标题、描述和部分内容所涉及到的知识点的详细说明: 1. **需求分析**: ...

    2021-2022计算机二级等级考试试题及答案No.1463.docx

    - **应用场景**:在设计数据库结构时,了解备注字段的存储方式有助于优化存储空间的使用,并提高查询性能。 ### 4. Visual FoxPro 数组支持 - **知识点**:Visual FoxPro 支持不同类型的数组。 - **解释**:Visual ...

Global site tag (gtag.js) - Google Analytics