使用Unique列进行MySQL搜索

时间:2015-10-21 16:02:49

标签: mysql search

我有一个简单而快速的问题。我在mysql中有一个拥有数百万用户的用户表。此表中的用户名列具有" unique"索引创建。

现在我想从这个表中搜索一个特定的用户,我这样写:

SELECT user_id FROM tbl_user WHERE username LIKE 'someuser%'

但这并没有给出准确的结果,我不得不将%放在两边以使其正常工作,如下所示:

SELECT user_id FROM tbl_user WHERE username LIKE '%someuser%'

这使搜索速度非常慢,因为它没有使用索引。 有什么建议如何让它超级快?我应该应用全文索引吗?是否可以在同一列上同时应用unique和fulltext?

以下是表格结构

  

CREATE TABLE IF NOT EXISTS tbl_user ( 的user_id int(11) NOT NULL auto_increment, 的用户名varchar(50) collate utf8_unicode_ci NOT NULL, 密码varchar(40) collate utf8_unicode_ci NOT NULL, 活性tinyint(4) NOT NULL default '1', 姓名varchar(20) collate utf8_unicode_ci default NULL, 姓氏varchar(20) collate utf8_unicode_ci default NULL, 电子邮件varchar(50) collate utf8_unicode_ci default NULL, PRIMARY KEY ( {USER_ID {1}}的用户名), UNIQUE KEY的用户名(

我认为FullText索引可以正常工作。但是,如果我使用OR在同一查询中的另一列上执行FullText(下面的示例),则它不使用索引。仅当where子句中只有一个全文搜索条件时,它才使用索引。

)
  ) ENGINE=InnoDB;

有什么想法吗?

0 个答案:

没有答案