在MySql中,查找具有给定前缀的字符串

栏目: 数据库 · Mysql · 发布时间: 7年前

内容简介:翻译自:https://stackoverflow.com/questions/2011304/in-mysql-find-strings-with-a-given-prefix
MySql

中,我想查找其中一列中的字符串值以查询字符串开头(或与查询字符串相同)的记录.该列使用适当的归类顺序编制索引.但是列上没有全文搜索索引.

一个好的解决方案将:

>使用列上的索引.需要迭代表中所有记录的解决方案不够好(表中有数百万条记录)

>使用具有任何字符值的字符串.某些列值包含标点符号.查询字符串也可能.如果您的解决方案包含正则表达式字符或类似字符,请记住这一点.字符串是UTF-8编码的,但如果您的解决方案仅适用于ASCII,它仍然有用.

我现在最接近的是

SELECT * FROM TableName WHERE ColumnName BETWEEN query AND <<query+1>>

其中<<query 1>>预先计算以按字典顺序在 排序 顺序中跟随查询.例如,如果查询是“o hai”,那么<<query 1>>是“o haj”.

令人惊讶的是,如果您正在进行前缀搜索,LIKE查询将使用索引.

SELECT * from TableName Where ColumnName LIKE 'o hai%'

确实会使用索引,因为它不以通配符开头.

这个(以及其他行为)记录在“MySQL如何使用索引”文档中:

http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

您将需要转义’%’字符并遵循正常的引用规则,但除此之外,任何utf-8输入前缀都应该起作用并完成工作.运行EXPLAIN查询以确保有时其他原因可以阻止索引工作,例如需要执行OPTIMIZE TABLE来更新索引基数(尽管这可能需要很长时间并锁定表)

翻译自:https://stackoverflow.com/questions/2011304/in-mysql-find-strings-with-a-given-prefix


以上所述就是小编给大家介绍的《在MySql中,查找具有给定前缀的字符串》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

百度SEO一本通

百度SEO一本通

潘坚、李迅 / 电子工业出版社 / 2015-6 / 59.00元

《百度SEO一本通》通过浅显易懂的叙述方式,以及大量的图示,详细介绍了SEO的关键技术要点,对于搜索引擎优化中重要的关键词优化、链接优化,以及百度推广中的推广技巧都进行了详细的介绍。 《百度SEO一本通》共分为11章,首先让大家了解SEO存在的原因,然后对网页、网站、空间和程序与SEO的关系展开了细节上的讨论,最后几章深入介绍了百度推广的相关概念、设置、技巧和实操,让读者可以轻松上手操作,易......一起来看看 《百度SEO一本通》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具