提高 LIKE 子句的性能

2023-11-21

这几天来,这一直是我头疼的事情。我之前创建数据库时对性能一无所知LIKE。我使用的查询是这样的,

SELECT  ....
FROM    .... JOINS ....
WHERE   tableA.col1 LIKE '%keyword%' OR
        tableB.col2 LIKE '%keyword%' OR
        tableC.col2 LIKE '%keyword%' OR
        .....

当我测试查询时,它非常快,因为它只有大约 100-150 条记录。我想搜索包含该关键字的任何字符串。几个月过去了,数据库变得越来越庞大,包含 50,000 条记录。而这一次,我已经体验到了查询性能的低下。这是非常低的。

有什么建议我可以如何改进吗?我无法更改数据库,因为它已经被公司使用。

顺便说一下,我的桌子都是INNODB.


这种类型的搜索称为全文搜索,并且您确实需要使用专门的系统来代替它,而不是强制数据库不断地进行表扫描。您实质上将所有想要搜索的文本交给搜索引擎,然后搜索引擎将其编入索引以进行快速搜索。

一种选择是阿帕奇卢塞恩.

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

提高 LIKE 子句的性能 的相关文章

  • MSSQL:如何使用代码编写存储过程创建脚本?

    我正在尝试使用一个数据库中存在但另一个数据库中不存在的 information schema routines 查询存储过程定义列表 SELECT t1 Routine Definition FROM server1 MyDatabase
  • 如何比较 Postgresql 中日期时间字段中的日期?

    在比较 postgresql Windows 中的版本 9 2 4 中的日期时 我遇到了一个奇怪的情况 我的表中有一列说update date与类型timestamp without timezone 客户可以仅使用日期搜索此字段 例如 2
  • 为什么我在 WinForms 列表框中得到“System.Data.DataRowView”而不是实际值?

    每当我运行代码并尝试查看highscore我在列表框中得到的只是System Data DataRowView 谁能明白为什么吗 Code MySqlConnection myConn new MySqlConnection connStr
  • Wordnet sqlite 同义词和示例

    我正在尝试获取给定 wordid 的同义词和示例列表 经过大量的试验和错误 我可以获得所有同义词集的样本 但不是实际的同义词 这是我的查询 它给出了以下结果 select senses wordid senses synsetid sens
  • 日常 MySQL(部分和过滤)复制的最佳实践?

    我有一个相当大的数据库 有超过 40 个表 我只需要复制几个表 5 并且每个表也被过滤 我正在寻找一些复制这些数据的最佳实践 每天就足够了 我可以只选择几个表并为每个表包含一些 WHERE 子句 我正在考虑为每个表启动 mysqldump
  • 通过字符串操作预防 PHP SQL 注入[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 中防止 SQL 注入的最佳方法 https stackoverflow com questions 60174 best way to prevent sql injection in php
  • 通过 PDO 将双精度数插入 MySQL 时精度损失

    我遇到了这种非常烦人的行为 我想知道我是否做错了什么 或者这是否是故意的 如果是的话 为什么 每当我在 php 5 3 中有一个 double 类型的变量 并且想将其插入到数据库 MYSQL 5 0 的 double 类型字段中时 该值总是
  • 如何处理PDO异常[重复]

    这个问题在这里已经有答案了 我正在尝试与PDOphp 上的类 但我在找到处理错误的正确方法时遇到了一些麻烦 我编写了以下代码
  • PostgreSQL & regexp_split_to_array + 取消嵌套

    我有这样的绳子 测试1 纽约 X 测试 2 芝加哥 Y 测试 3 宾夕法尼亚州哈里斯堡 Z 我需要的结果是 Column1 Column 2 Column3 Test 1 new york X Test 2 chicago Y Test 3
  • MySQL解释更新

    作为我大学复习的一部分 我试图回答以下问题 至少在表的一个属性上创建索引 employees 数据库 您可以在其中使用 MySQL EXPLAIN 工具 清楚地显示好处 在条款或检索方面 和负面 在 更新条款 创建相关索引的信息 对于第一部
  • 法语和西班牙语的特殊字符可以保存在 varchar 中吗?

    法语和西班牙语中有普通英语中不使用的特殊字符 重音元音等 varchar 是否支持这些字符 或者我需要一个 nvarchar 吗 注 我愿意NOT希望讨论我是否应该使用 nvarchar 还是 varchar 您在谈论什么 SQL 实现 我
  • C# 查询两个数据库的数据

    我目前有一个查询 我正在从两个不同的数据库获取数据 这些数据被附加到一个名为 accountbuys 的列表中 我的第一个表有三个数据条目 3个想要购买股票的帐户 下一张表有 17 个数据点 购买 17 只股票 I am merging t
  • Python 子进程、mysqldump 和管道

    我在尝试构建简单的备份 升级数据库脚本时遇到问题 错误出现在使用子进程的 mysqldump 调用中 cmdL mysqldump user db user password db pass domaindb gzip gt databas
  • SQL Like 带有子查询

    我怎样才能做到这一点 SELECT FROM item WHERE item name LIKE SELECT equipment type FROM equipment type GROUP BY equipment type 内部子查询
  • 过滤项目来源

    通过此代码 我设置了数据网格的 ItemsSource 不过 我有更多的 wpf 控件来过滤数据网格 例如从时间范围过滤数据网格 我可以为此编写一个新查询 但这似乎没有必要 因为数据已经可用 我只需要过滤它 最好的方法是什么 我能得到的任何
  • 如何在 MySQL 中启用严格 sql_mode?

    我怎样才能启用严格sql mode在 MySQL 中 我想从 SQL 中获取数据并在中处理相同的数据strict mode 我现在的sql mode is mysql gt SELECT sql mode sql mode NO ENGIN
  • 选择两列中两个日期之间的记录

    如何选择两列中两个日期之间的记录 Select From MyTable Where 2009 09 25 is between ColumnDateFrom to ColumnDateTo 我有一个日期 2009 09 25 我喜欢选择
  • Solr 增量导入不起作用

    我使用的是solr 4 2 请注意 完全导入有效 但增量导入却无效 增量导入不会给出任何错误 但不会获取任何更改 这是数据配置文件
  • 如何限制两个表之间一对多关系中的多个数量?

    我有一个带有两个 MySql 表的 MySQL 数据库 第一个是第一个表 表 A 有一列具有唯一值 从值 从 1 到 n 在第二个表 2 表 B 中 我有两列 在第一个表中我有一个名称 在第二个我的值从 1 到 n 如果我在 中添加一个值
  • 如何更新 MySQL 数据库中的两列?

    这不起作用 UPDATE customers SET firstname John AND lastname Smith WHERE id 1 用逗号分隔值 AND是一个逻辑运算符 它的位置是WHERE and ON条款 UPDATE cu

随机推荐

  • 在Python中将int转换为二进制字符串

    如何在 Python 中将整数转换为二进制字符串 37 100101 Python 的字符串格式方法可以采用格式规范 gt gt gt 0 b format 37 100101 Python 2 的格式规范文档 Python 3 的格式规范
  • CPU 中的 LRU 缓存是如何实现的?

    我正在为面试做准备 想重温一下我对缓存的记忆 如果CPU有一个带有LRU替换策略的缓存 那么它在芯片上实际上是如何实现的呢 每个缓存行会存储一个时间戳记吗 另外 在双核系统中两个 CPU 同时写入同一个地址时会发生什么情况 对于只有两种路的
  • AngularJs:替换字符串的一部分

    AngularJs 有没有办法替换字符串 我正在尝试做类似的事情 string replace some thing Thanks 你的片段有效 demo http plnkr co edit yNuNeE5yO3rgKAYfGx48 p
  • 相当于 C# 中 VB 的格式

    等效代码是什么Format iCryptedByte 000 VB NET 在 C 中 String Format format iCryptedByte where format like 0 D2 参见MSDN1 2 3
  • 在 Matplotlib 中绘制 k-NN 决策边界图

    How do I color the decision boundaries for a k Nearest Neighbor classifier as seen here I ve got the data for the 3 clas
  • Android:Edittext-获取当前行

    在编辑文本中是否有获取光标当前行的方法 如果没有 我会编写自己的方法 但只是想检查一下 如果我确实编写自己的方法 最好的方法是遍历编辑文本中的每个字符 直到选择开始并使用 For 循环计算 n 的数量 还是有更好的方法 谢谢 只是为了让人们
  • Angular 2 中无法加载图像

    HTML 文件 div img src New Google Logo png div 这里 New Google Logo png 与 html 文件位于同一文件夹中 但是在 ng 服务之后 html 页面会加载其他详细信息 但不会加载图
  • 如何在 Windows 上 pip 或 easy_install tkinter [重复]

    这个问题在这里已经有答案了 IDLE 抛出错误并说tkinter无法导入 有没有简单的安装方法tkinter via pip or easy install 似乎有很多软件包名称为此而流传 这个和其他各种变体tkinter pypy不工作
  • auto 关键字在 Dev C++ 中不起作用[重复]

    这个问题在这里已经有答案了 这是我写的代码 看看如何auto关键字有效 但它没有在 Dev C 中编译并给出以下警告 警告 C 11 auto 仅适用于 std c 11 或 std gnu 11如何克服这个故障并按照警告的指示去做 inc
  • Xamarin Forms:TabbedPage 中的内容页

    我正在尝试将一些自定义内容页面放入选项卡式页面中 遗憾的是我不确定如何使用 XAML 语法执行此操作 我的虚拟项目如下所示 Page 1
  • 将 AsyncRead 转换为 TryStream 字节的最佳方法是什么?

    我有一个AsyncRead并想将其转换为Stream
  • 同一个表中与 SQLAlchemy 的多对一关系

    我有一张 客户 表 其中客户可以是另一个客户的子项 这是表定义 ClientID int IDENTITY 1 1 NOT NULL name varchar 50 NOT NULL VPFSID varchar 50 NOT NULL T
  • 在 WebView 中从相机或图库上传图像

    此应用程序中的 WebView 打开一个带有上传按钮的页面 下面的代码块允许打开一个对话框以从图库或相机上传图像 在我的活动中 我有 private WebView wv make HTML upload button work in We
  • 一个干净的 CSS3 3 列布局,从哪里开始?

    我目前正在更新一个相当旧的网站 上次更新是在 2001 年左右 并同意使用 HTML5 和 CSS3 对于总体设计 我正在研究一种非常干净的白色和灰色色调风格 带有许多填充和边距 我的问题出在主页上 我想要一个 3 列居中布局 但从哪里开始
  • Python ctypes 加载错误:未定义的符号

    我试图使用 ctypes 将从 C 源代码编译的共享库加载到 Python 中 共享库 名为 库子库 下面 使用libusb图书馆 这就是 make 所做的 gcc c O2 Wall Werror g I src I boot vnd f
  • 从 CSV 文件中提取数据(融合表和 kml 解决方法)

    在使用 C 的 Android 版 Xamarin 谷歌地图中 您可以基于此创建多边形tutorial public void OnMapReady GoogleMap googleMap mMap googleMap PolylineOp
  • TransactionScope 无法与并行扩展一起使用?

    如果我执行以下操作 Using scope New TransactionScope entries Content ReadAs Of IList Of WebMaint AsParallel ForAll Sub entry repos
  • jquery推送制作多维数组

    我在没有帮助的情况下查看了其他类似的帖子 它们都是从已经制作的多维数组开始的 我想通过使用 push 神奇地制作一个 我的阵列 ItemsArray push RoomName RoomName Item this is where I w
  • 当数组长度不为空时出现“恐慌:运行时错误:索引超出范围”

    我很难学习如何在 Go 中循环字符串来做一些事情 具体来说 分隔单词而不是包含元音 我写了这个代码片段 https play golang org p zgDtOyq6qf 这是我运行时遇到的错误 panic runtime error i
  • 提高 LIKE 子句的性能

    这几天来 这一直是我头疼的事情 我之前创建数据库时对性能一无所知LIKE 我使用的查询是这样的 SELECT FROM JOINS WHERE tableA col1 LIKE keyword OR tableB col2 LIKE key