MySQL 中 FIND_IN_SET 函数执行非常慢的某种写法

2023-11-04

MySQL版本:5.7.19

1、需求场景

a) 表说明:商品分类关系表[t_class_product],[classId]  分类主键,fn_class_childs(1) 返回所有子分类主键字符串;

b) 功能说明: 依据 分类主键 查询该分类下的所有商品

2、问题定位

a) 之前操作:新上传几千个商品,然后就发现查询数据非常慢,长达10多秒;

b) 开始以为 [fn_class_childs()] 函数执行慢,结果执行非常快;

c) 然后怀疑是不是 [FIND_IN_SET] 函数 查询数据多就非常慢,

     然后查找函数的效率问题,但发现至少查询几十,上百万数据才有影响,而且也不会需要10几秒的时间;


d) 结果分开查询都很快,  合起来就慢的很,使用 explain 分析也没发现什么问题,最后怀疑可能每次比较都可能调用函数[fn_class_childs()]


3、解决方式

a) 既然找到可能的问题,就自然想到缓存查询函数结果,但又不想改的太复杂;


             b) 使用 explain 可以发现 使用了临时表存储结果,查询速度恢复以前的十几毫秒;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 中 FIND_IN_SET 函数执行非常慢的某种写法 的相关文章

  • asp连接Mssql的方法及常见的错误

    asp衔接Mssql的办法及常见的差错 第一种写法 xff1a MM conn STRING 61 34 Driver 61 SQL Server server 61 local uid 61 sa pwd 61 database 61 i
  • MSSQL手工注入语句积累

    网上别人整理的语句 xff0c 留个Copy and exists select from sysobjects 判断是否是MSSQL and exists select from tableName 判断某表是否存在 tableName为
  • (转-收集)MSSQL手工注入语句集合

    and exists select from sysobjects 判断是否是MSSQL and exists select from tableName 判断某表是否存在 tableName为表名 and 1 61 select 64 6
  • 10-26 查询成绩最高的前三名同学(MSSQL)

    本题目要求编写SQL语句 xff0c 查询 C语言 课程成绩最高的前三名同学 提示 xff1a MSSQLServer 评测SQL语句 表结构 请在这里写定义表结构的SQL语句 例如 xff1a 学生表 CREATE TABLE stu s
  • 10-12 查询所有学生的平均成绩(MSSQL)

    分数 10 全屏浏览题目 切换布局 作者 张庆 单位 集美大学 本题目要求编写SQL语句 xff0c 在stu表 和 sc表 中查询所有学生的平均成绩 xff0c 如果某学生尚未选修课程或成绩为空时 xff0c 平均分计为0 提示 xff1
  • 10-17 查询没有选修‘C语言‘课程的学生(MSSQL)

    分数 10 全屏浏览题目 切换布局 作者 张庆 单位 集美大学 本题目要求编写SQL语句 xff0c 检索出没有选修 39 C语言 39 课程的学生记录 xff0c 输出结果集按照学号升序排序 提示 xff1a MSSQLServer 评测
  • 10-13 查询各专业学生的平均成绩(MSSQL)

    本题目要求编写SQL语句 xff0c 统计各专业的学生选课的平均成绩 xff0c 如果某专业尚未有任何学生选修课程或成绩为空时 xff0c 平均分计为0 输出结果集按照major表中的mno升序排序 提示 xff1a MSSQLServer
  • node.js 连接 mssql 代码

    首先要安装 mssql 包 xff1a npm install mssql 第一种 xff1a var sql 61 require 39 mssql 39 连接方式2 xff1a 34 mssql 用户名 密码 64 ip地址 1433
  • Centos Docker 从零开始(1)之安装 mssql

    Docker 从零开始 xff08 1 xff09 目标 xff1a 在 centos 上搭建docker xff0c 并且安装 mssql 数据库 xff0c 数据文件放在主机上 在centos上面安装docker 空白的centos 系
  • Centos Docker 从零开始(2)之 mssql 的数据库文件保存在主机

    Docker mmsql新建数据库如果能够把数据库文件保存在主机上就好了 xff0c centos好像可以挂载的 docker 的 run 命令 xff1a v nginx www www 将主机中项目的目录www挂载到容器的 www 准备
  • asp连接Mssql的方法及常见的错误

    asp衔接Mssql的办法及常见的差错 第一种写法 xff1a MM conn STRING 61 34 Driver 61 SQL Server server 61 local uid 61 sa pwd 61 database 61 i
  • 大Sql文件使用cmd命令执行

    sqlcmd S 127 0 0 1 U sa P 123 d tcd test1217 i E fap sql 键入 sqlcmd S 127 0 0 1 U sa P 000000 d DataBaseName i sqlfileNam
  • 数据库中创建视图和索引还有存储过程起什么作用?

    视图可以被看成是虚拟表或存储查询 可通过视图访问的数据不作为独特的对象存储在数据库内 数据库内存储的是 SELECT 语句 SELECT 语句的结果集构成视图所返回的虚拟表 用户可以用引用表时所使用的方法 在 Transact SQL 语句
  • C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)

    本实验中所用到工具为VS2008和SQL SERVER 2000 SQL SERVER 2008 分别使用5中方法将100万条数据导入SQL 2000与SQL 2008中 实验环境是DELL 2850双2 0GCPU 2G内存的服务器 感兴
  • 基于 python 的数据库简单开发实验

    基于 python 的简单数据库应用程序开发总结 前言 在大三上数据库课时需要做基于数据库的 C S 和 B S 的简单应用 对之前一直接触命令行黑框框的笔者来说 需要临时学习不少新的技术 实际最后的开发非常简单 只是在前期选定技术和查找文
  • 数据库存储大数据量(千万条记录级别)数据的考虑要点

    分区 将数据库分区可提高其性能并易于维护 通过将一个大表拆分成更小的单个表 只访问一小部分数据的查询可以执行得更快 因为需要扫描的数据较少 而且可以更快地执行维护任务 如重建索引或备份表 实现分区操作时可以不拆分表 而将表物理地放置在个别的
  • SQL Server数据导入导出工具BCP详解

    bcp是SQL Server中负责导入导出数据的一个命令行工具 它是基于DB Library的 并且能以并行的方式高效地导入导出大批量的数据 bcp可以将数据库的表或视图直接导出 也能通过SELECT FROM语句对表或视图进行过滤后导出
  • 用SQL语句从AD中读取用户相关属性 从AD中读取用户的相关属性

    参考原文链接 http www myexception cn sql server 1011477 html EXEC sp addlinkedserver ADSI Active Directory Services 2 5 ADSDSO
  • mssql sqlserver 获取指定日期为本月第几个工作日

    转自 https www cnblogs com lairui1232000 p 9286104 html 摘要 下文讲述工作中 需要获取指定日期在当月的工作日 下文讲述常规的指定工作日所在月的天数分析 实现思路 1 生成一个国家法定假日表
  • SQL Sever——远程过程调用失败(0x800706be)

    最近重装了系统 VS和SQL Sever莫名奇妙的不能用了 下面总结一下这个过程中遇到的问题 跟大家分享一下经验 大概是以前的安装过程都十分顺利 这次 在尝试了数次登陆不上去之后 我仍然怀疑是自己眼花了 怎么办 查吧 一开始我想到的 肯定是

随机推荐