假设我有一个MySQL服务器,其中一个表有超过100万条记录。为了便于说明,可以说这些是产品。为简化起见,表格只有3列:
product_id - 名称 - 价格
假设我有一个显示信息的表格。通过TextBox,每次按键,我都不想选择 包含该TextBox中的字符串的产品,另外TextBox可以有多个搜索字符串(最多3)除以字符' ^'所以如果TextBox有一个字符串,如:" st ^ b ^ ry"它会选择包含''' b'并且' ry'。
我做了这样的查询:
SELECT
product_id,
name,
price
FROM
products
WHERE
name LIKE %{Param1}%
AND name LIKE %{Param2}%
AND name LIKE %{Param3}%
ORDER BY
name ASC
本地我觉得这很好但是当程序在其他地方使用时,查询和表在每次按键后都会永远加载。所以......
更新
我已经检查了Loathing发布的问题,并根据我读到的最佳解决方案:
SELECT name FROM table
WHERE MATCH (name) AGAINST ('keyterm');
拥有FULLTEXT索引(使用MyISAM引擎)。但问题在于它不会显示部分条目。如果我有一种名为" 1/2 Blue Strawberry"在关键时期,我有一个' a' (作为一个例子),什么都不会出现。我不希望它只是寻找单词,但每条记录都包含我想要的东西,即使它只是一个字母。