`
cd0281
  • 浏览: 123008 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

mysql对于大字段的查询慢的处理

 
阅读更多
有两个表
create table e_question (
   question_id          char(32)             not null,
   topic_id             char(32)             null,
   title                varchar(1000)        null,
   answer               varchar(500)        null,
   answer_analysis      varchar(1500)        null,
   question_type        varchar(50)          null,
   score                numeric(20,2)        null,
   seq                  numeric(5,0)         null,
   institution_code     varchar(50)          null,
   create_date          varchar(20)          null,
   create_user          varchar(50)          null,
   constraint PK_E_QUESTION primary key (question_id)
)


create table e_pick_topic (
   pick_topic_id        char(32)             not null,
   task_id              char(32)             null,
   topic_id             char(32)             null,
   institution_code     varchar(50)          null,
   create_date          varchar(20)          null,
   create_user          varchar(50)          null,
   constraint PK_E_PICK_TOPIC primary key (pick_topic_id)
)


在表e_question有3个大字段,title, answer, anser_analysis,所以在关联查询的时候会很慢,如:
SELECT eq.topic_id, eq.question_id, eq.answer, eq.answer_analysis, eq.question_type, eq.question_type, eq.seq, eq.score   
FROM e_question eq left join e_pick_topic ept  
on ept.topic_id=eq.topic_id where ept.task_id='758BDAB8751CFEB400007936421123' AND ept.institution_code='test';

这个在环境中需要10来秒的时间,但是去掉三个字段就飞快。

在我调试的时候,发现是因为大字段的问题,在调试中将语句改成

方式1:

1步骤:
select topic_id from e_pick_topic where task_id='758BDAB8751CFEB400007936421123' and institution_code='test';


2.步骤:
select eq.topic_id, eq.question_id, eq.title, eq.answer, eq.answer_analysis, eq.question_type, eq.seq, eq.score from e_question eq
where topic_id in ('7564888E751CFEB400003750162951','7564889E751CFEB400003756561015','7564889E751CFEB400003762107475','7564889E751CFEB400003768978194','756488AD751CFEB400003774710532','756488AD751CFEB400003780898187','756488AD751CFEB400003786711844','756488AD751CFEB400003792199143','756488AD751CFEB400003798114697','756488BD751CFEB400003804334112','756488BD751CFEB400003810603026','756488BD751CFEB400003816274746','756488BD751CFEB400003822964006','756488CD751CFEB400003828924522','756488CD751CFEB400003834876747','756488CD751CFEB400003840513031','756488CD751CFEB400003846430043','756488CD751CFEB400003852596200','756488DC751CFEB400003858275793','756488DC751CFEB400003864456005','756488DC751CFEB400003870670344','756488DC751CFEB400003876565867','756488EC751CFEB400003882613793','756488EC751CFEB400003888361271','756488EC751CFEB400003894586024','756488EC751CFEB400003900327297','756488EC751CFEB400003906720322','756488FB751CFEB400003912456060','756488FB751CFEB400003918971501','756488FB751CFEB400003924468869','756488FB751CFEB400003930805450','7564890B751CFEB400003936807772','7564890B751CFEB400003942820780','7564890B751CFEB400003948938316','7564890B751CFEB400003954866911','7564890B751CFEB400003960142081','7564891B751CFEB400003966566807','7564891B751CFEB400003972572799','7564891B751CFEB400003978699664','7564891B751CFEB400003984950892','7564892A751CFEB400003990976715','7564892A751CFEB400003994142222','7564892A751CFEB400003998183213','7564892A751CFEB400004002545282','7564892A751CFEB400004006418623','7564892A751CFEB400004010860697','7564892A751CFEB400004014881827','7564893A751CFEB400004018735173','7564893A751CFEB400004022928694','7564893A751CFEB400004026929017','7564893A751CFEB400004030733099','7564893A751CFEB400004034392529','7564893A751CFEB400004038431427','7564893A751CFEB400004042168002','75648949751CFEB400004046323486','75648949751CFEB400004050809106','75648949751CFEB400004054675041','75648949751CFEB400004058761562','75648949751CFEB400004062499206','75648949751CFEB400004066293360','75648949751CFEB400004070771754','75648959751CFEB400004096265694')


这样总共加起来的时间还不用0.06秒的时间,
所以得到的结论是对需要查询大字段,不应该做关联查询,应该使用分开独立查询。

方式2

将字段的类型都改成text类型。这样关联查询的时候,消耗的时间为0.3到0.4秒之间。

使用分开查询的话,也是在0.06秒之前。

[b]可以建不管是使用varchar 还是text类型,如果需要查询大字段出来,就不应该使用关联查询来实现。而是使用分开查询[/b]




分享到:
评论

相关推荐

    MySql 按时间段查询数据方法(实例说明)

    MySQL作为常用的关系型数据库管理系统,其提供了丰富的函数和操作符来处理时间相关的数据查询。本文将详细说明如何使用MySQL进行按时间段查询数据的方法,包括操作示例和说明。 首先,我们必须了解MySQL中处理时间...

    解决MySql大数据Like查询慢的问题

    在MySQL数据库中,LIKE查询是常用的模糊匹配方法,但当处理大数据量时,尤其是涉及到通配符(如%)的LIKE查询,其性能问题不容忽视。这类查询往往会导致全表扫描,消耗大量的CPU资源和时间,进而拖慢整体系统的响应...

    45-MySQL单表2000万数据查询慢解决方案1

    MySQL单表2000万数据查询慢解决方案1 本文主要讨论了如何解决MySQL单表2000万数据查询慢的问题,通过将表分区和使用时间触发器来实现数据的优化。 分区设计 在解决方案中,我们使用的是按照8周将单表分为8个区,...

    Mysql慢查询日志查看

    Mysql 慢查询日志查看 Mysql 慢查询日志查看是指在 Mysql 数据库中,记录和分析执行时间较长的查询语句,以便优化数据库性能和提高查询效率。慢查询日志查看可以帮助数据库管理员和开发者快速地定位和优化数据库中...

    二、mysql优化技术-定位慢查询

    这篇博文可能详细介绍了如何诊断和解决MySQL中的慢查询问题,而`sql.txt`文件很可能包含了一些示例SQL语句或者慢查询日志。 慢查询通常是由于不恰当的索引使用、过度的数据扫描、复杂的查询逻辑或是资源争抢等原因...

    数据库大字段编辑工具

    数据库大字段编辑工具是一款专为解决数据库中存储大字段(如XML、长文本等)时面临的查看和编辑难题而...总的来说,这款工具为数据库管理和维护提供了一种强大的辅助手段,极大地提升了处理大字段数据的效率和便利性。

    MySQL优化篇:慢查询日志.pdf

    为了让慢查询日志永久生效,需要修改MySQL的配置文件`***f`,在`[mysqld]`部分加入慢查询日志相关的配置,例如:`slow_query_log=1`表示开启慢查询日志,`long_query_time=3`设置慢查询阈值为3秒,`log_output=FILE`...

    mysql慢日志查询

    ### MySQL慢查询日志详解 #### 一、慢查询日志简介 MySQL慢查询日志是一种重要的工具,用于记录执行时间超过指定阈值的SQL语句。这些记录可以帮助数据库管理员和开发人员识别并优化那些效率较低的查询,从而提高...

    ORACLE数据库中插入大字段数据的解决方法

    在实际应用中,需要确保代码正确处理了不同数据库之间的数据类型差异,比如MySQL的TEXT到ORACLE的CLOB,同时考虑到大字段的处理。 总结来说,处理ORACLE数据库中的大字段数据时,应关注存储模式选择、批量操作、...

    mysql的慢日志配置查询和show processlist使用

    通过分析慢查询日志,我们可以找到 MySQL 中执行时间最长的 SQL 语句,并对其进行优化,从而提高 MySQL 的性能。 在上面的例子中,我们手动触发了两个慢查询,一个是 11 秒的慢查询,另一个是 20 秒的慢查询。然后...

    lepus(天兔)监控MySQL主从复制延迟,慢查询

    1. Lepus监控工具:这是一个数据库监控系统,专门用来监控MySQL主从复制延迟和慢查询问题。 2. MySQL主从复制延迟:这指的是MySQL数据库在主从架构模式下,从服务器与主服务器之间的数据复制可能存在时间差,而Lepus...

    mysql慢查询工具Anemometer

    MySQL的慢查询日志是数据库性能优化的重要工具,它记录了执行时间超过预设阈值的所有SQL查询。Anemometer,作为一个专为MySQL设计的慢查询分析工具,可以帮助数据库管理员更有效地理解和解决性能问题。 Anemometer...

    mysql性能优化-慢查询分析、优化索引和配置.doc

    - 开启慢查询日志的方法有两种:一种是在MySQL配置文件`my.cnf`或`my.ini`中添加相关参数;另一种是通过命令行动态设置。 配置示例: ```ini [mysqld] log-slow-queries = /data/mysqldata/slow-query.log ...

    MySQL慢查询相关知识

    ### MySQL慢查询相关知识 #### 一、概览 MySQL慢查询是指那些执行时间超过预设阈值的SQL语句。这些慢查询不仅会降低数据库性能,还可能导致用户体验下降。因此,了解如何诊断和优化慢查询是每个DBA或开发人员必备...

    解决MySQL Sending data导致查询很慢问题的方法与思路

    MySQL数据库在处理查询时,有时会遇到"Sending data"状态导致查询速度变慢的问题。这种情况通常意味着MySQL正在收集并发送数据给客户端,特别是当查询涉及到大字段如`TEXT`或`VARCHAR(8000)`等时,性能瓶颈可能就在...

    mysql如何处理大数据量的查询

    在实际的任何一个系统中,查询都是必不可少的一个功能,而查询设计的好坏又影响到系统的响应时间和性能这两个关键指标,尤其是当数据量变得越来越大时,于是如何处理大数据量的查询成了每个系统架构设计时都必须面对...

    如何解决局域网内mysql数据库连接慢

    通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。非常急人,有没有办法可以解决局域网内mysql数据库连接慢呢?下面小编带领大家来解决此问题,感兴趣的朋友一起看看吧

    mysql及慢查询监控.rar

    慢查询监控是MySQL管理中的重要环节,它能够帮助我们识别并优化那些执行时间过长,影响整体数据库性能的SQL语句。PMM(Percona Monitoring and Management)是一款强大的开源工具,专为MySQL、MongoDB和Percona ...

    (mysql面试题)MySQL中的慢查询日志的作用及其使用方法及代码展示.txt

    4. **查看慢查询日志**:在一段时间之后,可以使用`mysqldumpslow`工具查看慢查询日志: ```bash mysqldumpslow -s t /var/lib/mysql/slow-query.log ``` 通过以上步骤,我们可以有效地利用慢查询日志来监控和...

Global site tag (gtag.js) - Google Analytics