`
liuhanjun
  • 浏览: 47782 次
  • 性别: Icon_minigender_1
  • 来自: 海口
社区版块
存档分类
最新评论

mysql的find_in_set效率探讨

    博客分类:
  • J2EE
 
阅读更多

对于树型结构的处理,确实很费劲,但是树型结构又是很常见的,部门、知识点等。一般会在表里面做个parentId形成树结构,查询的时候mysql一般要用到find_in_set把子子孙孙的东东查出来,很简洁方便。可是,经测试,find_in_set的效率比构造很多or条件要慢得多,1W条级的表,就要慢1000倍,简直不是玩意!我现在都要强迫自己忘记mysql里面有find_in_set这个鸟玩意。2点需要跟各位同仁探讨:

1、用数据表表示tree型结构,有无更好办法?我知道老外提出一种平坦模型来搞,查询很方便高效,但是貌似添加、修改麻烦,更重要的是那种模型不直观。

2、find_in_set有无简单、非侵入式的替代方案?

0
1
分享到:
评论
1 楼 sbwfgihc 2017-08-17  
楼主有解决方案吗,比如说查树型结构

相关推荐

    mysql中find_in_set()函数的使用详解

    MySQL中的`FIND_IN_SET()`函数是一个非常实用的工具,特别是在处理存储了多个值的“集合同类”字段时,例如文章类型字段`type`。这个函数主要用于在以逗号分隔的字符串列表中查找指定的子串位置。在本文中,我们将...

    PHP程序设计-3期(KC016) 5.2.2删除数据拓展知识.doc

    本节将深入探讨PDO(PHP Data Objects)扩展在删除MySQL数据库中的数据,特别是关于批量删除和使用`find_in_set()`函数的方法。 PDO是PHP提供的一种面向对象的数据库访问接口,支持多种数据库系统,包括MySQL。使用...

    MySQL实现类似于connect_by_isleaf的功能MySQL方法或存储过程

    这里我们主要探讨两种MySQL的实现方式:一种是使用用户定义的变量和`FIND_IN_SET`函数,另一种是利用存储过程和中间表。 ### 第一种方法:用户定义变量和`FIND_IN_SET`函数 此方法创建了一个名为`lvtao_demo_a`的...

    PHP程序设计-3期(KC016) 5.2.2删除数据常见问题.docx

    然而,需要注意的是,`FIND_IN_SET`并不是一个高效的查询方式,当`bookId`列表非常长时,可能会导致性能下降。因此,如果可能,更推荐使用`IN`操作符配合预处理语句的变通方法,如使用多个占位符或者将数组拆分成多...

    Mysql字符串字段判断是否包含某个字符串的2种方法

    `FIND_IN_SET`是MySQL提供的一个字符串函数,用于在由逗号分隔的列表中查找指定的字符串。其语法为`FIND_IN_SET(str, strlist)`,它会返回`str`在`strlist`中的位置,如果不存在则返回0。因此,我们可以这样使用它来...

    MYSQL SET类型字段的SQL操作知识介绍

    查询SET类型的字段时,可以使用`FIND_IN_SET()`函数。例如,`SELECT * FROM table WHERE FIND_IN_SET('hot', mark)`会返回所有标记包含“hot”的行。另一种方法是直接使用按位与(&)运算,如`SELECT * FROM table ...

    MySQL主从安装部署.docx

    在本文中,我们将深入探讨如何进行MySQL主从安装部署,这是构建高可用性数据库架构的关键步骤。首先,我们需要准备必要的环境并下载安装包。 1. **安装包下载与依赖安装** 在开始安装MySQL之前,确保系统已经安装...

    MYSQL 一个巧用字符函数做数据筛选的题

    这个任务可以通过结合`FIND_IN_SET`、`SUBSTRING_INDEX`和`CONCAT`等字符串函数来完成。 1. `FIND_IN_SET`函数:此函数用于在一个由逗号分隔的字符串中查找指定元素的位置。例如,`FIND_IN_SET('59', col1)`将返回...

    mysql的函数及命令集合

    本篇文章将深入探讨MySQL中的常用函数和命令,帮助你更好地理解和运用这些功能。 一、时间与日期函数 1. NOW():返回当前日期和时间。 2. CURDATE():返回当前日期。 3. CURTIME():返回当前时间。 4. DATE_FORMAT...

    MySQL关于字符串中数字排序的问题分析

    在这个例子中,`FIND_IN_SET()`函数用于查找字符串'id'在另一个字符串列表('1,2,3,4,5')中的位置,返回值为1到N,然后根据这些位置进行排序。请注意,这种方法适用于已知的、静态的数字列表,并且不适用于动态或...

    Qt下MySql数据库驱动

    本篇文章将详细探讨如何在Qt环境下配置和使用MySQL数据库驱动,以及相关的编程实践。 首先,要使用Qt的MySQL驱动,你需要确保已经安装了MySQL数据库服务器,并且在系统中安装了适用于Qt的MySQL驱动程序。在Linux...

    通过VB读取MYSQL数据库数据

    在本示例中,我们将探讨如何使用VB连接到MYSQL数据库,检索数据,以及进行数据修改和上传操作。 1. **连接MYSQL数据库** 要连接到MYSQL数据库,VB需要使用ADO(ActiveX Data Objects)组件,如ADODB.Connection。...

    2-5+附MySQL安装教程1

    如果MySQL已经安装,我们可以使用`rpm -e --nodeps`命令卸载它,并通过`find / -name mysql`查找并删除所有相关的文件和目录。 接下来,我们安装MySQL服务器。在CentOS 7之前,可以使用`yum install mysql-server`...

    MySQL备份脚本的写法

    本文将讲解如何使用 mysqldump 工具编写 MySQL 的备份脚本,并探讨如何根据不同的环境制定合理的备份策略。 1. 制定合适的备份策略 - 物理备份与逻辑备份:小型数据库(小于100GB)通常选择逻辑备份(mysqldump)...

    linux中安装mysql教程.docx

    在Linux环境中安装MySQL数据库是一项常见的任务,特别是在服务器管理和开发工作中。本教程将引导你完成Linux上MySQL的安装、配置以及一些基本操作。 首先,我们从下载安装开始。MySQL的官方下载地址是...

    PHP程序设计-3期(KC016) 5.2.1显示数据拓展知识.doc

    如果你需要在`IN`子句中使用一组值,可以考虑使用`find_in_set()`函数,这是一个MySQL特定的函数,可用于解决此问题。 总结起来,PDO扩展在PHP中为数据库操作提供了强大的功能,包括连接管理、错误处理、预处理语句...

    Mysql通过Adjacency List(邻接表)存储树形结构

    SELECT GROUP_CONCAT(eid) INTO cid FROM Employees WHERE FIND_IN_SET(parent_id, cid); END WHILE; SELECT GROUP_CONCAT(ename) INTO result FROM Employees WHERE FIND_IN_SET(eid, str); END // DELIMITER...

    .NET core3.1+entityframework+mysql+增删改查

    在本项目中,我们将探讨如何结合Entity Framework,一个强大的对象关系映射(ORM)工具,以及MySQL数据库进行基本的增删改查操作。 首先,让我们了解Entity Framework。Entity Framework是.NET平台上的一个开源ORM...

    mysql中使用replace替换某字段的部分内容

    在本文中,我们将深入探讨如何在MySQL中使用`REPLACE()`函数来替换某字段的部分内容。 首先,我们需要了解`REPLACE()`函数的基本语法: ```sql REPLACE(str, find_string, replace_with) ``` 这里的参数含义如下...

Global site tag (gtag.js) - Google Analytics