1、创建索引
对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会引起致命的性能下降。但是也不是什么情况都非得建索引不可,比如性别可能就只有两个值,建索引不仅没什么优势,还会影响到更新速度,这被称为过度索引。
2、复合索引
比如有一条语句是这样的:select * from users where area='beijing' and age=22;
如果我们是在area和age上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效率,但是如果在area、age两列上创建复合索引的话将带来更高的效率。如果我们创建了(area, age, salary)的复合索引,那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。
3、索引不会包含有NULL值的列
只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。
4、使用短索引
对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。
5、排序的索引问题
mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
6、like语句操作
一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。
7、不要在列上进行运算
select * from users where YEAR(adddate)<2007;
将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成
select * from users where adddate<‘2007-01-01';
8、不使用NOT IN和<>操作
NOT IN和<>操作都不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替,id<>3则可使用id>3 or id<3来代替。 <!--endmain-->
- 浏览: 1065193 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (1441)
- 软件思想&演讲 (9)
- 行业常识 (250)
- 时时疑问 (5)
- java/guava/python/php/ruby/R/scala/groovy (213)
- struct/spring/springmvc (37)
- mybatis/hibernate/JPA (10)
- mysql/oracle/sqlserver/db2/mongdb/redis/neo4j/GreenPlum/Teradata/hsqldb/Derby/sakila (268)
- js/jquery/jqueryUi/jqueryEaseyUI/extjs/angulrJs/react/es6/grunt/zepto/raphael (81)
- ZMQ/RabbitMQ/ActiveMQ/JMS/kafka (17)
- lucene/solr/nuth/elasticsearch/MG4J (167)
- html/css/ionic/nodejs/bootstrap (19)
- Linux/shell/centos (56)
- cvs/svn/git/sourceTree/gradle/ant/maven/mantis/docker/Kubernetes (26)
- sonatype nexus (1)
- tomcat/jetty/netty/jboss (9)
- 工具 (17)
- ETL/SPASS/MATLAB/RapidMiner/weka/kettle/DataX/Kylin (11)
- hadoop/spark/Hbase/Hive/pig/Zookeeper/HAWQ/cloudera/Impala/Oozie (190)
- ios/swift/android (9)
- 机器学习&算法&大数据 (18)
- Mesos是Apache下的开源分布式资源管理框架 (1)
- echarts/d3/highCharts/tableau (1)
- 行业技能图谱 (1)
- 大数据可视化 (2)
- tornado/ansible/twisted (2)
- Nagios/Cacti/Zabbix (0)
- eclipse/intellijIDEA/webstorm (5)
- cvs/svn/git/sourceTree/gradle/jira/bitbucket (4)
- jsp/jsf/flex/ZKoss (0)
- 测试技术 (2)
- splunk/flunm (2)
- 高并发/大数据量 (1)
- freemarker/vector/thymeleaf (1)
- docker/Kubernetes (2)
- dubbo/ESB/dubboX/wso2 (2)
最新评论
优化Mysql数据库的8个方法
发表评论
-
Mysql中DATE_SUB 使用方法结合查询一天内,一周内,一月内的信息实例讲解
2018-02-07 09:05 785在对数据查询或菜单时经常要对指定的时间或时间段进行查询,例 ... -
MySQL里获取当前week、month、quarter的start_date/end_date
2018-02-06 13:51 682select curDate(); #获取当前日 ... -
查看数据库
2018-01-28 20:38 544---mysql查看用户名和密码 select Hos ... -
数据导入到数据库
2018-01-09 20:23 466数据导出当数据量大时最好是dump文件,sql文件过大不好执行 ... -
使用数据库客户端工具Oracle SQL Developer加载第三方驱动连接mysql的方法
2018-02-28 09:20 1270用Oracle SQL Developer时遇到no oc ... -
数据连接符
2018-02-28 09:32 547不同的数据库中字符串连接符不同,下面列举几种数据库的连接符 ... -
commit
2018-01-08 10:12 0刚接触SQLSERVER,刚才insert了一条记录,为什么 ... -
Redis操作命令总结
2017-10-25 12:43 1702redis-cli 中。 使用命令 ... -
PostgreSQL中表名、字段名大小写问题
2017-10-21 20:59 0学习hibernate的时候,数据库用了PostgreSQL ... -
怎么解决Greenplum中用pg
2018-07-19 09:51 494基本思路是为ns1.table1设置分布策略:root登陆 ... -
mysql unrecognized service问题解决
2017-10-21 20:34 0unrecognized 英 [ʌnˈrekəgna ... -
Oracle创建视图、通过视图创建表
2017-10-21 19:11 1160创建视图: [sql] view plain c ... -
PostgreSQL中表名、字段名大小写问题
2017-10-19 10:48 1299如果有视图依赖该表则该表不能删除 学习hibern ... -
关于性能测试几个名词概念的说明
2017-10-11 10:05 451什么是性能测试 在一定的负载下,系统的响应时间 ... -
数据库性能优化详解
2017-10-11 09:59 9391.数据库访问优化法则 要正确的优化SQL,我们需 ... -
Oracle怎样把varchar2型转成number型
2017-09-23 11:13 1672varchar2型转成number型的前提条件是varch ... -
oracle中字符串的大小比较,字符串与数字的比较和运算
2017-09-23 11:08 2858Oracle比较字符串是根据ASCII码来的,第一个字母的 ... -
greenplum 程序开发优化原则
2017-09-22 14:07 731greenplum 程序开发优化原则 1、批量数据处理后, ... -
PostgreSQL 时序最佳实践 - 证券交易系统数据库设计 - 阿里云RDS PostgreSQL最佳实践
2017-09-22 01:06 1305PostgreSQL , 证券 , 时序数据 , JSON ... -
PostgreSQL 时序最佳实践
2017-09-21 12:26 1192以股票交易为例,一共 ...
相关推荐
MySQL数据库优化MySQL数据库优化MySQL数据库优化MySQL数据库优化
本文将详细介绍优化MySQL数据库性能的八大妙手,帮助你提升数据库效率,减少延迟,提高用户体验。 一、索引优化 索引是提高查询速度的关键。正确地创建和使用索引可以显著加快数据检索。应为经常用于搜索和排序的列...
本文档旨在深入浅出 MySQL 数据库开发、优化与管理维护的知识点,涵盖了 MySQL 数据库开发的基本概念、优化技巧和管理维护方法。 数据库开发篇 在本篇中,我们将学习 MySQL 数据库开发的基础知识,包括数据类型、...
以下是从八个方面介绍的完全优化MySQL数据库性能的方法: 1. **选取合适的字段属性** - 字段宽度:尽可能减小字段的宽度可以降低存储需求,提高查询速度。例如,邮政编码字段只需设定为CHAR(6)即可。 - 避免无用...
总的来说,MySQL数据库原理及设计方法涉及到网络通信、查询优化、并发控制、事务处理等多个层面,理解这些知识对于有效地使用和管理MySQL数据库至关重要。通过合理的设计和配置,可以确保MySQL在高并发环境下提供...
MySQL数据库服务器配置是数据运维课程中的一个重要实验,实验的主要目的是掌握MySQL的安装方法,练习MySQL数据库服务器的使用,理解MySQL服务器的组成,掌握MySQL服务器的配置方法。 一、实验目的 掌握MySQL的...
MySQL数据库优化SQL篇PPT课件.pptx ...本PPT课件对MySQL数据库优化的重要知识点进行了详细的讲解,并提供了许多实用的优化技巧和方法。通过学习本PPT课件,可以提高数据库的性能和效率,提高开发效率和质量。
MySQL 数据库性能优化是一个持续不断的过程。通过调整硬件配置、优化数据库设计和查询语句,可以显著提升 MySQL 数据库的性能和响应速度。然而,每个业务场景都有其特殊性,需要根据实际情况进行分析和优化。在实施...
MySQL数据库服务器配置 MySQL数据库服务器配置是国家开放大学数据库运维 形考一的重要组成部分。通过这个实验,我们将掌握 MySQL 的安装方法,了解 MySQL 服务器的组成,掌握 MySQL 服务器的配置方法。 MySQL安装...
MySQL 数据库优化是数据库管理和开发者非常关心的一个问题。由于 MySQL 数据库的性能优化可以直接影响到整个应用系统的性能和用户体验,因此掌握 MySQL 数据库优化技巧对开发者和数据库管理员来说非常重要。本文总结...
然而,随着业务的不断扩展和数据量的持续增加,如何优化MySQL数据库的查询性能成为了一个不得不面对的问题。本文将探讨三种行之有效的MySQL查询优化方法:合理使用索引、通过EXPLAIN分析查询以及调整MySQL内部配置。...
优化MySQL数据库性能的八种方法, 1、选取最适用的字段属性 2、使用连接(JOIN)来代替子查询(Sub-Queries) 3、使用联合(UNION)来代替手动创建的临时表
MySql数据库性能优化 MySql数据库性能优化是指通过调整和优化数据库的各种参数、结构和查询语句,提高数据库的运行速度和效率,减少资源占用和系统瓶颈。下面将详细介绍MySql数据库性能优化的相关知识点。 什么是...
MySQL数据库巡检手册是MySQL数据库管理员(DBA)在进行数据库管理和维护工作中非常重要的参考资料。巡检手册包含了数据库性能、安全、运行状况等方面的检查项,以确保数据库能够正常稳定运行,及时发现并解决潜在问题...
MySQL 数据库与 SQL 优化 + 集群 + 负载均衡 MySQL 数据库与 SQL 优化是提高数据库性能的关键一步骤。 SQL 优化可以通过优化数据库结构、索引、查询语句等方式来实现。下面是 MySQL 数据库与 SQL 优化的主要知识点...
简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习mysql的读者。 简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习...
本文将深入探讨如何在C#中使用MySQL数据库连接池。 首先,我们需要了解什么是数据库连接池。数据库连接池是一种资源管理技术,它预先创建并维护一定数量的数据库连接,当应用需要时,可以从池中获取连接,使用完毕...
第8课 查询优化技术理论与MySQL实践(六)------数据库的约束规则与语义优化 数据库的参照完整性(CHECKt NULL等)。什么是语义优化? MySQL是否支持语义优化?怎么利用语义优化的思路人工进行SQL语句的优化? 预计...
MySQL数据库架构还包括查询优化器、缓存机制、锁机制等多个组件。 MySQL数据库架构的优点包括: * 高性能: MySQL数据库架构能够提供高性能的数据存储和查询功能。 * 灵活性: MySQL数据库架构能够支持多种存储...