mysql - 索引文本 - MySQL 与 MS SQL

标签 mysql sql-server full-text-indexing

图像你有这样的应用程序:1个DB表,几个int字段,几个小的varchar字段,以及大约10个TEXT字段(内容变量 - 一些数据大约50个字符长,大多数大约100-200,一些大约1000,非常很少超过1000)。行数的单位是 x0 000 - x00 000。 现在,我需要有效的方法来进行这样的查询(元语言):

SELECT (1 if textfield1 LIKE %param1% ELSE 0) as r1,(1 if textfield2 LIKE %param2% ELSE 0) as r2, ... 等等,通常对于 1 个查询中的大多数文本字段(它是动态 - 可能包含其中 2 个,也可能包含全部)。

现在的问题是 - MySQL 或 MSSQL 哪个对我更好(可能的话可能是 Express,如果确实需要则升级到完整版本)?

我知道 MySQL 有很好的文本索引,您可以根据自定义的第一个字符数设置索引,因此我可以在典型场景中平衡它(如下所示: http://fernandoipar.com/2009/08/12/indexing-text-columns-in-mysql/ )

MSSQL 只有全文索引,我对此没有经验。请注意,我不需要诸如单词邻近度或类似单词之类的功能(run = ran;一些词干提取会很好,但因为数据是多语言的,所以无论如何都是不可能的)。我只需要通用的 LIKE %word% 系统,仅此而已。而且我还必须能够找到短子字符串(2 个字符)。

实际上,目标是每小时/每天运行尽可能多的此类查询(永远不会有足够的结果,因为它们应该尽可能频繁地刷新),因此请将这种效率视为要求:)

谢谢!

更新:显然没有办法使用索引来优化 LIKE %foo% 查询。所以新的问题是:有没有其他方法可以加快此类查询的速度? (请省略“购买更多内存或 SSD”之类的内容:)

最佳答案

LIKE '%foo%' 表达式无法在任何 RDBMS 中进行优化。

您需要 mysql 中的全文索引或在 sql server

I need just common LIKE %word% system

然后选择您想要的任何 DBMS,因为它们都会吸收这样的子句;-)

关于mysql - 索引文本 - MySQL 与 MS SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4931797/

相关文章:

sql-server - SQL Server 2008 的备份应用程序日志在哪里?

java - 将 SQLquery 映射到普通对象,而不是实体

mysql - FROM 子句中的全文搜索和子查询

sql-server - SQL Server 中的 itemcount 属性应该匹配什么

mysql - 使用 Magmi 导入 Magento 产品 - 访问数据库被拒绝

mysql - 日志 Rails 中未知的 SQL 平均查询

PHP 变量值不更新 MySQL 表字段?

sql-server - 使用 T-SQL 查找大约重复的数据库记录?

php - 如何在 MySQL 中的多个表中进行搜索

php - 将单选按钮和复选框的值放入数据库 PHP