资源简介
MySql查询数据慢可以用用这个工具,瞬间提升Like查询效率
代码片段和文件信息
package test;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
public class LikeSearch {
@SuppressWarnings(“unchecked“)
private final CharColumn columns[] = new CharColumn[Character.MAX_VALUE];
public void put(T tString value){
char[] chars = value.toCharArray();
for(int i=0;i char c = chars[i];
CharColumn column = columns[c];
if(null == column){
column = new CharColumn();
columns[c] = column;
}
column.add(t(byte)i);
}
}
/**
* 修改数据
* @param id 主键id
* @param newValue 新字符串
*/
public void update(T idString newValue){
remove(id);
put(idnewValue);
}
/**
*
* @param word
* @param limit
* @return
*/
public Collection search(String wordint limit){
char chars[] = word.toCharArray();
int n = word.length();
Context context = new Context();
for(int i =0;i CharColumn column = columns[chars[i]];
if(column == null){
break;
}
if(!context.filter(column)){
break;
}
n--;
}
if(n ==0){
return context.limit(limit);
}
return Collections.emptySet();
}
/**
* 删除数据
* 删除成功 返回true不包含返回false
* @param id
* @return
*/
public boolean remove(T id){
boolean sign = false;
for(CharColumn column : columns){
if(column != null){
if(column.remove(id)){
sign = true;
}
}
}
return sign;
}
private class Context{
Map result;
boolean used =false;
private boolean filter(CharColumn columns){
if(this.used == false){
this.result = new TreeMap(columns.poxIndex);
this.used = true;
return true;
}
boolean flag = false;
Map newResult = new TreeMap();
Set> entrySet = columns.poxIndex.entrySet();
for(Map.Entry entry:entrySet){
T id = entry.getKey();
byte[] charPox = entry.getValue();
if(!result.containsKey(id)){
continue;
}
byte[] before = result.get(id);
boolean in = false;
for(byte pox :before){
if(contain(charPox(byte)(pox+1))){
in = true;
break;
}
}
if(in){
flag = true;
newResult.put(id charPox);
}
}
result =newResult;
return flag;
}
public Collection limit(int limit){
if(result.size() <= limit){
return result.keySet();
}
Collection ids = new TreeSet();
for(T id : result.keySet()){
ids.add(id);
if(ids.size() >
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4237 2017-11-17 21:58 LikeSearch\LikeSearch.java
文件 439 2017-11-17 22:00 LikeSearch\TestLikeSearch.java
目录 0 2017-11-17 22:12 LikeSearch\
相关资源
- mysql数据库驱动8.0.12版本
- mha4mysql-0.56-0.el6
- mysql_5.6.24_winx64
- MYSQL作业提交作业批改系统.zip
- Maven搭建Spring+Mybatis+MySql
- 成语首尾字用于成语接龙.sql
- MySQL中文手册api帮助文档
- linux_mysql5.1.66x86_64.zip
- oracle 到mysql转换工具
- 数据库原理实验指导书Mysql
- mysql 5.6 绿色精简版 5Mb
- mysql Premium 破解
- 深入浅出MySQL第二版本pdf
- 深入浅出MySQL.pdf
- 深入浅出mysql全文
- 全球国家及地区库,采集自腾讯QQ国内
- mysql操作练习的表数据
- 免费的Navicat11全系列注册机Navicat fo
- Navicat For MySql 8.0.20 简体中文版(含破
- navicat for mysql v 11.1.13破解工具
- mysql数据库5.6连接包
- Navicat for MySQL注册机 绿色版
- 旅游管理系统数据库
- 易语言MySQL注册登录源码
- 传智播客mysql的sql优化
- msvcr120.dll 32位和64位
- mysql5.7驱动.rar
- mysql innodb恢复数据工具.rar
- 易语言Mysql线程池2.0模块源码
- 数据库宾馆管理系统Mysql
评论
共有 条评论