-
大小: 2KB文件類型: .zip金幣: 2下載: 1 次發(fā)布日期: 2021-06-10
- 語言: 數(shù)據(jù)庫
- 標簽: MySql??Like??
資源簡介
MySql查詢數(shù)據(jù)慢可以用用這個工具,瞬間提升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);
???}
???
???}
???
???/**
????*?修改數(shù)據(jù)
????*?@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();
???}
???
???/**
????*?刪除數(shù)據(jù)
????*?刪除成功?返回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\
評論
共有 條評論