文档章节

对于Mysql大量数据查询速度慢的问题

百世经纶一页书梵天
 百世经纶一页书梵天
发布于 2017/09/13 17:12
字数 610
阅读 18
收藏 0

1.如果mysql数据量过大,当查询的时候耗时比较长,则会影响页面数据展示。给客户的直观反应的:

点击了某个查询功能,结果等了差不多十几秒才反应出来,这样的体验感太差了。

2.为了增加反应速度。一般来是建立索引,如我现在的查询语句:

SELECT
                aa.INDI_NAME,
                aa.gg,
                aa.gp,
                aa.pn,
                bb.report_name
            FROM
                (
                    SELECT
                        T.INDI_ID,
                        T.INDI_NAME,
                       SUM(CASE WHEN T.AREA_ID =2501 THEN T.INDI_VALUE ELSE 0 END) gg,
                       SUM(CASE WHEN T.AREA_ID =2502 THEN T.INDI_VALUE ELSE 0 END) gp,
                       SUM(CASE WHEN T.AREA_ID =2503 THEN T.INDI_VALUE ELSE 0 END) pn
              FROM  VW_ST_INDEX_INST_DAY_2310_DT_X T
             WHERE T.MONTH_NO = '201708'
               AND T.DATE_NO = '20170831'
               AND T.LATN_ID = '1100'
               AND T.TYPE_ID < '99'
               AND T.REPORT_ID = '23100104' -- 该至是个变至1到4变化 例如:23100101,23100102,23100103,23100104
             GROUP BY T.INDI_ID, T.INDI_NAME

            UNION ALL

            SELECT T.INDI_ID, T.INDI_NAME,
                       SUM(CASE WHEN T.AREA_ID =2501 THEN T.INDI_VALUE ELSE 0 END) gg,
                       SUM(CASE WHEN T.AREA_ID =2502 THEN T.INDI_VALUE ELSE 0 END) gp,
                       SUM(CASE WHEN T.AREA_ID =2503 THEN T.INDI_VALUE ELSE 0 END) pn
              FROM  VW_ST_INDEX_INST_DAY_2310_DT_X T
             WHERE T.MONTH_NO = '201708'
               AND T.LATN_ID = '1100'
               AND T.DATE_NO <= '20170831'
               AND T.TYPE_ID ='99'
               AND T.REPORT_ID = '23100104'  -- 该至是个变至1到4变化 例如:23100101,23100102,23100103,23100104
             GROUP BY T.INDI_NAME, T.INDI_ID) aa,
            (SELECT
                *
             from dim_report_conf
             where report_id = '23100104') bb  -- 该至是个变至1到4变化 例如:23100101,23100102,23100103,23100104

 

如下反应速度比较慢是2秒

 

建立索引:

索引语句:

CREATE INDEX vwIndexIdLAAAA on vw_st_index_inst_day_2310_dt_x (REPORT_ID,LATN_ID,DATE_NO);

 

然后再次或者多次查询就变成了0.009秒了

 

所以还是建立索引比较快。

Specified key was too long; max key length is 767

如果出现这种错误:Specified key was too long; max key length is 767

则是你数据库字段太长了,需要修改具体的长度计算规则如下:

经过查询才知道,是Mysql的字段设置的太长了,于是我把这两个字段的长度改了一下就好了。 

建立索引时,数据库计算key的长度是累加所有Index用到的字段的char长度后再按下面比例乘起来不能超过限定的key长度1000: 
latin1 = 1 byte = 1 character 
uft8 = 3 byte = 1 character 
gbk = 2 byte = 1 character 

举例能看得更明白些,以GBK为例: 
CREATE UNIQUE INDEX `unique_record` ON reports (`report_name`, `report_client`, `report_city`); 
其中report_name varchar(200), report_client varchar(200), report_city varchar(200) 
(200 + 200 +200) * 2 = 1200 > 1000,所有就会报1071错误,只要将report_city改为varchar(100)那么索引就能成功建立。 
如果表是UTF8字符集,那索引还是建立不了。

(200 + 200 +200) * 3 = 1800 大于提示信息字段。

 

© 著作权归作者所有

共有 人打赏支持
百世经纶一页书梵天
粉丝 3
博文 68
码字总数 46355
作品 0
海口
程序员
私信 提问
如何解决大数据量的查询统计

现在目前遇到的问题是.. 系统现在灌进去近百万的收费信息,物品出库信息等大量数据. 数据库是mysql数据 目前通过系统页面进行统计查询.所有的查询结果都是通过数据库实时查询出来, 因为考虑财...

Chaos_heart
2012/12/12
3K
3
to 野鬼-- mysql 可以保证你死在上面

@中山野鬼 , 这个东西是专门给野鬼说的,有其业务背景. 其他的mysqler就不要进来捣乱了. 词汇表: 数据库 -- 除mysql以外的mssql,sybase,oracle,postgresql等. Mysql不是数据库 -- 这是非常严谨...

宏哥
2012/07/13
826
12
mysql 数据库定义

mysql msyql 数据库 什么是数据库?存放数据的仓库 传统的关系型数据库:mysql、oracle、db2、sysbase 互联网最火 mysql、oracle 什么是关系型数据库? 1、二维表格 2、互联网运维最常用的是...

鎏金儿
2017/04/05
0
0
SQL Server 性能优化之——系统化方法提高性能

阅读导航 1. 概述 2. 规范逻辑数据库设计 3. 使用高效索引设计 4. 使用高效的查询设计 5. 使用技术分析低性能 6. 总结 1. 概述 在比较大的范围内找出能够大幅提高性能的区域,并且专注于分析...

长平狐
2013/06/17
705
0
Mysql内存表的用处, 2010年的帖子

个人最欣赏MySQL的地方就是他存储引擎的多样性和可扩展性,这样mysql也能拥有多种多样的个性,嘿嘿! 那今天说说内存表的用处吧: 说实话mysql的myisam引擎在查询、插入等方面和内存表引擎基...

zyt_1978
2016/09/25
25
1

没有更多内容

加载失败,请刷新页面

加载更多

4.57 MariaDB慢查询日志 4.58 Tomcat_JDK部署 4.59 zrlog安装 4.60 Nginx代理Tomcat

4.57 MariaDB慢查询日志 为什么要配置慢查询日志? 目的是为了帮助我们分析MariaDB的瓶颈点。 如何配置? 1)进入MariaDB里面执行:show variables like 'slow%';show variables li...

Champin
今天
3
0
自动机器学习简述(AutoML)

为什么需要自动机器学习 对于机器学习的新用户而言,使用机器学习算法的一个主要的障碍就是算法的性能受许多的设计决策影响。随着深度学习的流行,工程师需要选择相应的神经网络架构,训练过...

naughty
今天
2
0
Android Studio Unable to resolve dependency for错误的排查

记录一次Android Studio Unable to resolve dependency for错误的排查 Android Studio 3.2.1 错误提示 Unable to resolve dependency for... 原因:在gradle中设置的代理并没有gradle 4.6的版......

Gemini-Lin
今天
0
0
java常用设计模式

设计模式; 一个程序员对设计模式的理解: “不懂”为什么要把很简单的东西搞得那么复杂。后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“...

呵呵哒灬
今天
5
0
Kafka入门

1、Kafka使用背景 在我们大量使用分布式数据库、分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户的搜索关键词...

watermelon11
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部