最近在做mysql查询优化的工作,碰到一个问题,麻烦大家指点迷津。
创建表:
CREATE TABLE `cgis_query` (
`id` int(11) DEFAULT NULL,
`uri_param` varchar(5000) DEFAULT NULL,
KEY `id_index` (`id`),
FULLTEXT KEY `uri_param` (`uri_param`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1在uri_param字段上添加全文索引。目前表中约有9万条数据。查询结果如下所示:mysql> select count(*) from cgis_query where match(uri_param) against('+comjcho' in boolean mode);
+----------+
| count(*) |
+----------+
| 84979 |
+----------+mysql> select * from cgis_query where match(uri_param) against('+comjcho' in boolean mode) limit 60000,1;1 row in set (0.51 sec)mysql> select * from cgis_query where uri_param like '%comjcho%' limit 60000,1;1 row in set (0.05 sec)为什么使用全文索引比使用like更慢呢?求解啊。
怎样才能使全文搜索更快?
创建表:
CREATE TABLE `cgis_query` (
`id` int(11) DEFAULT NULL,
`uri_param` varchar(5000) DEFAULT NULL,
KEY `id_index` (`id`),
FULLTEXT KEY `uri_param` (`uri_param`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1在uri_param字段上添加全文索引。目前表中约有9万条数据。查询结果如下所示:mysql> select count(*) from cgis_query where match(uri_param) against('+comjcho' in boolean mode);
+----------+
| count(*) |
+----------+
| 84979 |
+----------+mysql> select * from cgis_query where match(uri_param) against('+comjcho' in boolean mode) limit 60000,1;1 row in set (0.51 sec)mysql> select * from cgis_query where uri_param like '%comjcho%' limit 60000,1;1 row in set (0.05 sec)为什么使用全文索引比使用like更慢呢?求解啊。
怎样才能使全文搜索更快?
解决方案 »
- 新手,请问mysql数据库可以设置定期备份吗?
- mysql查询结果,需要解析json字符串。
- 求一SQL优化
- 一台主机上有多个数据库,访问多个数据库需要建立多个连接吗?
- load data infile有没有能够替代insert into ... on duplicat key update `c`=`c`+`1的方法?
- mysql 的一个sql查询的 物理读如何才能知道
- 哪里可以下载开源的最新版MySql?
- 如何设置查询语句中的日期格式,请教各位大大
- 在windows下面怎样安装mysql?
- mysql_query()能新建一个表吗?
- update的时候会加锁吗
- 往Mysql 插入数据出现Connection.close() has been closed
我记得sql的索引有长度限制。在这里有点没搞清楚。