`

mysql优化

 
阅读更多

Mysql性能优化——实战篇

 

一、组合索引

1、什么是单列索引、组合索引?

       单列索引:就是对某一个列建立索引,比如只对username这列建立索引(对where后面的列创建索引)

add index(username(10))

查询语句:

select column from tbl_user where username=?;

      

       组合索引:顾名思义多一个列建立索引,比如对username, email, address建立索引

add index(username(10), email(12), address(10))

查询语句:

select column from tbl_user where username=? and email=? and address=?

 

2、如何设置索引

       对于varchar等类型他的长度是不固定的,为了提高检索效率,我们一般会对字段取前面的固定几位进行索引,比如上面的username10位。

3、什么是左侧原则

add index(username(10), email(12), address(10))

查询语句:

select column from tbl_user where email=? and address=?

       考虑上面这个语句有什么问题?效率为什么低?

       原因:建立上面这样的组合索引,其实数据库中相当于分别建立了以下三条:

add index(username(10)

add index(useranem(10), email(12))

add index(username(10), email(12), address(10))

       上面就是所谓的“左侧原则”,从最左边的开始进行组合。

       所以:下面几个效率会低,因为他找不到索引

select column from tbl_user where email=? and address=?

select column from tbl_user where email=?

select column from tbl_user where address=?

 

下面几个效率会高,因为他找到索引

select column from tbl_user where username=? and email=? and address=?

select column from tbl_user where username=? and email=?

select column from tbl_user where username=?

 

4、遇到or,如何写sql语句?

add index(username(10), email(12), address(10))

查询语句:

select column from tbl_user where username=? or email=?

       上面的查询语句很鸡肋,没办法靠索引方式来,怎么办了?优化sql语句(自我组合)。

则需要建立email索引,并用以下sql语句union

add index(email(12))

查询语句:

select column from tbl_user where username=? union select column from tbl_user where email=?

 

二、Text全文检索

       对于text必须使用MyISAM存储引擎

CREATE TABLE articles (

    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,

    title VARCHAR(200),

    body TEXT,

    FULLTEXT (body)

) ENGINE=MyISAM  DEFAULT CHARSET=utf8;   

      

       查询的时候:

SELECT * FROM articles

WHERE MATCH (body) AGAINST ('database');

 

三、水平数据剥离

比如:tbl_article

article_id

title

content

add_time

author

hit

int

varchar

text

timestamp

varchar

int

 

将大数据字段进行水平剥离content字段

现优化如下:

比如:tbl_ article(使用innodbhit字段经常更新)

article _id

Cotent

content_id

add_time

author

hit

int

varchar

int

timestamp

varchar

int

tbl_content(使用MyISAM,支持全文检索)

content _id

cotent

int

varchar

 

这样就可以把tbl_article数据列转换成固定的数据行格式,减少表的碎片,在查询的时候运行select * 不会通过网络传输大量的content内容了。性能上大大的提高了。

四、IP地址

       使用unsigned int来表示ip地址,比如:10.204.79.125,他存储的时候是:

       10*2^24+204*2^16+79*2^8+125”计算的值

       注意:java中需要使用long来进行操作。

 

user_id

ip

int

unsigned int

五、时间问题

       建议使用unsigned int来保存,如果使用DateTime类型来保存,见下面例子

select * from tbl_user where date(add_time) between ‘2012-12-1’ and ‘2012-12-10’

      

需要转化获取日期,date函数结果对索引无效。所以上面的方式在检索的时候效率很慢(无法使用索引)

       请使用如下方式保存字段:

user_id

add_time

int

unsigned int

      

查询的时候(时间是秒数)

select * from tbl_user where add_time>123123125553 and addtime<1231231235

 

 

分享到:
评论

相关推荐

    mysql优化笔记+资料

    以下是一份详细的MySQL优化笔记,涵盖了多个方面: 一、查询优化 1. 使用索引:为经常用于搜索的列创建索引可以显著加快查询速度。B树和哈希索引是最常见的类型,适用于不同的查询场景。 2. 避免全表扫描:尽量使用...

    mysql优化配置大全

    mysql慢可能是配置不对,阅读一下这个可能对你有帮助 ...对于Discuz!... 下面我们了解一下MySQL优化的一些基础,MySQL的优化我分为两个部分,一是服务器物理硬件的优化,二是MySQL自身(my.cnf)的优化。

    php之mysql优化

    以下将详细介绍MySQL优化的各个方面,并结合提供的文件名进行推测,尽管没有实际内容,但我们可以根据文件名来讨论可能涉及的主题。 1. **索引优化**:`mysql_rel.sql`可能包含SQL脚本,其中创建表结构和数据的关系...

    mysql优化.pdf

    在进行MySQL优化时,我们需要对数据库进行深入分析,以便找到性能瓶颈并进行相应的调整。优化可以分为三个主要部分:优化概述、查询与索引优化分析以及配置优化。 首先,在优化概述部分,了解MySQL数据库常见瓶颈是...

    MySql优化.rar

    在"MySQL优化.rar"这个压缩包中,我们很显然会接触到关于MySQL数据库优化的详细内容,这包括但不限于查询优化、索引优化、存储引擎选择、架构设计等多个方面。 首先,查询优化是MySQL性能提升的关键步骤。通过对SQL...

    mysql 优化工具.rar

    为什么要开发这个MySQL 优化工具(Why)   “一键优化”功能,可以优化本地/远程需要优化的机器,将繁琐的优化工作“傻瓜”式操作 根据您的业务需求Step By Step优化的MySQL服务器参数,起到指引的作用,简化用户...

    深入浅出的mysql优化大全

    以下是一些深入浅出的MySQL优化策略: 1. 选择合适的字段属性: 在设计数据库表时,应尽可能减小字段宽度,以减少存储空间和查询时间。例如,邮政编码字段只需设定为CHAR(6)即可,无需使用VARCHAR或更大的类型。...

    MySql优化.pdf

    MySQL优化是数据库管理中至关重要的环节,它涉及到提升查询性能、降低资源消耗,从而提高整个系统的响应速度和服务质量。MySQL自带的慢查询日志(slow query log)是进行优化的重要工具之一,它记录了执行时间超过预设...

    Mysql优化方法介绍.ppt

    MySQL 优化方法主要涵盖...总之,MySQL优化涉及多个层面,包括合理选择存储引擎、优化字段类型、建立合适索引以及编写高效的SQL语句。每个环节都对数据库性能有着直接影响,需要根据实际业务需求进行综合考虑和调整。

    MySQL优化.docx

    ### MySQL优化知识点详解 #### 一、MySQL简介 MySQL是一款由MySQL AB公司开发的开源数据库管理系统,后来该公司被Sun Microsystems收购。MySQL因其简单、高效、可靠的特点,在IT行业中迅速崭露头角,成为最受欢迎...

    MYSQL优化-一篇很好的优化文章

    21. MYSQL扩展/优化-提供更快的速度 22. MYSQL何时使用索引 23. MYSQL何时不使用索引 24. 学会使用EXPLAIN 25. 学会使用SHOW PROCESSLIST 26. 如何知晓MYSQL解决一条查询 27. MYSQL非常不错 28. MYSQL应避免...

    我的mysql 优化日记

    我的mysql优化日记 我的mysql优化日记 我的mysql优化日记 我的mysql优化日记

    MySQL优化大揭秘.rar

    MySQL优化是数据库管理中至关重要的一个环节,它旨在提高数据查询效率、降低系统资源消耗,以确保服务的稳定性和响应速度。"MySQL优化大揭秘"这个压缩包中的"SQL.pdf"很可能包含了关于如何优化MySQL数据库的详细教程...

    mysql优化-sql高级

    mysql优化从以下几个方面介绍 mysql的架构 索引优化分析 查询截取分析 mysql锁机制 主从复制

    Mysql优化 PPT

    MySQL优化是数据库管理中的关键环节,它涉及到性能提升、资源利用率优化以及系统稳定性的保障。这份"Mysql优化 PPT"可能会涵盖多个方面的内容,包括但不限于查询优化、索引策略、存储引擎选择、数据库架构设计、资源...

    大型门户网站核心技术-Mysql优化

    教程名称:大型门户网站核心技术-Mysql优化 课程目录:【】Mysql优化 资料【】Mysql优化01关键技术【】Mysql优化02表的设计【】Mysql优化03慢查询(一)【】Mysql优化04慢查询(二)【】Mysql优化05慢查询(三)【】Mysql...

    企业级MySQL优化(从引擎为你介绍怎么优化、集群方案)

    总结来说,企业级MySQL优化是一个综合性的任务,涵盖安装配置、引擎选择、算法理解、集群构建和日常维护等多个环节。通过深入理解MySQL的工作机制和优化技巧,可以有效地提升数据库性能,保障企业的业务运行。

Global site tag (gtag.js) - Google Analytics