我对MySQL知之甚少。现在,我有一个包含近1,000,000个条目的表格,我希望在特定列中搜索特定字符串并返回列。
我已经看过LIKE
但是我已经读过这么多条目了。我听说Fulltext-Indexing它是一个更好的搜索选项。
我使用phpMyAdmin查看我的MySQL数据库。我不知道我需要对我的表进行哪些确切的修改以及之后应该使用的函数?
PS:此外,是否可以与{{1}}中的{{1}}模式匹配1>
答案 0 :(得分:2)
您可以使用FULLTEXT索引加快搜索表格。但是,它有一些限制 - 它只适用于MyISAM表(除非你使用MySQL 5.6.4 or newer),你需要在你想要一次搜索的所有列上指定它,你只能搜索那些超过整个数据库服务器的全局限制(默认为4个字符)
使用PhpMyAdmin创建索引,或者你可以手动完成,语法很简单:
ALTER TABLE tablename ADD FULLTEXT (column_you_want_to_search);
或者更多列:
ALTER TABLE tablename ADD FULLTEXT (column1, column2, column3);
然后你可以询问数据库,哪些行包含一些单词:
SELECT * FROM tablename WHERE MATCH(column_you_want_to_search) AGAINST ('search query')
SELECT * FROM tablename WHERE MATCH(column1, column2, column3) AGAINST ('another query')
还可以选择“布尔模式”,您可以在其中指定所需的单词,不需要或使用星号作为通配符。有关详情,请参阅this MySQL reference。