我在mysql表中的中文文本列上做了很多类似的查询。我有以下架构:
table events
* response MEDIUMTEXT
* request MEDIUMTEXT
* user_id
查询:
SELECT * FROM events wHERe user_id = X and response LIKE ...
我可以在user_id列上放置一个索引,以使查询运行得更快(但仍然会处理数百万行),但显然不在响应列上。
我可以采用哪种解决方案来优化mysql中的查询?
我应该考虑其他数据库解决方案,例如弹性搜索吗?
答案 0 :(得分:0)
如果您可以在user_id
列上添加索引,那么您的查询将运行得更快,并会对这些标识符执行优化搜索。
要解决LIKE
的性能问题,如果您的查询始终涉及文本搜索,并且此查询不仅仅是一次尝试,您可以使用FULL-TEXT搜索功能。有关MySQL here中FULL-TEXT搜索的更多信息。有一个在SO的this question中使用FULL-TEXT的例子。
答案 1 :(得分:0)
如果搜索查询类似,您也可以像stackoverflow一样使用标记。