mysql全文索引
2016-06-16 18:19
260 查看
了解 solr 之后 发现全文索引也能做检索 故了解了下 笔记如下
创建全文索引
ALTER TABLE table
ADD FULLTEXT INDEX fulltext_table(列1,
列2 ,...)
查询方式
SELECT
* FROM table WHERE MATCH(列1,
列2 ,...) AGAINST('查询字符串')
注意:
查询列 要完全等于创建的全文索引列
六百万记录的表
例如
SELECT * FROM testdata WHERE MATCH(name2, name3,name4) AGAINST('dd84fe6c236a 231e3c6d 11e5') 查询时间3秒多
SELECT
* FROM testdata WHERE MATCH(name2, name3,name4) AGAINST('231e3c6d') 查询时间0.001秒
查询字符串分词越多 越慢
cto说 他对中文索引没有那么高效 ... 没去实验了
当下或者是以后技术选型 不用 全文索引的原因
只能在MyISAM表里弄 操作锁表 阻塞其它操作 不友好 ,还不支持事务~额这个不行,,,(实在要用MyISAM的环境
这个表对外只提供查询,,插入修改之类的操作在自己的内部系统某几个人用)
全文索引只能做高级的like用,,当以后like太慢了 且表是myisam格式 可用全文索引 ,具体的复杂的句式查询还是solr高效
创建全文索引
ALTER TABLE table
ADD FULLTEXT INDEX fulltext_table(列1,
列2 ,...)
查询方式
SELECT
* FROM table WHERE MATCH(列1,
列2 ,...) AGAINST('查询字符串')
注意:
查询列 要完全等于创建的全文索引列
六百万记录的表
例如
SELECT * FROM testdata WHERE MATCH(name2, name3,name4) AGAINST('dd84fe6c236a 231e3c6d 11e5') 查询时间3秒多
SELECT
* FROM testdata WHERE MATCH(name2, name3,name4) AGAINST('231e3c6d') 查询时间0.001秒
查询字符串分词越多 越慢
cto说 他对中文索引没有那么高效 ... 没去实验了
当下或者是以后技术选型 不用 全文索引的原因
只能在MyISAM表里弄 操作锁表 阻塞其它操作 不友好 ,还不支持事务~额这个不行,,,(实在要用MyISAM的环境
这个表对外只提供查询,,插入修改之类的操作在自己的内部系统某几个人用)
全文索引只能做高级的like用,,当以后like太慢了 且表是myisam格式 可用全文索引 ,具体的复杂的句式查询还是solr高效
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复