mysql模糊查询,有比like更高效的么
SELECT*FROMcourseWHEREnameLIKE'%晓%'运行效果:注意事项:使用like%name%这样的语句是不会走索引的,相当于全表扫描
本回答由网友推荐
当数据量非常
mysql模糊查询,有比like更高效的么 SELECT*FROMcourseWHEREnameLIKE'%晓%'运行效果:注意事项:使用like%name%这样的语句是不会走索引的,相当于全表扫描 本回答由网友推荐 当数据量非常大的时候怎么优化mysq的模糊查询 是发送到发送到放松放松的份上的冯绍峰 如何查询优化及分页算法方案? 即使在我们的HP ML 350 G3服务器上试验时,CPU峰值也能达到90%,一般持续在70%左右。 本文的试验数据都是来自我们的HP ML 350服务器。服务器配置:双Inter Xeon 超线程 CPU 2。4G,内存1G,操作系统Windows Server 2003 Enterprise Edition,数据库SQL Server 2000 SP3。 求一本比较好的能够讲清楚MySQL优化?求一本比较好的能够讲清楚 其实,个人感觉,并不需要你这么仔细的去看这些书籍,要亲手实践。如果不清楚的简单操作网上进行查询即可。关于计算机的书籍你会越看越觉得没意思。 mysql 模糊查询 1、如果你什么也没有输入的话,sql语句就如下: select * from tablename where name like '%%'; 这样的话就是 name 等于任何字符都会被查出,当然所有内容都会出来了。 2、这不是问题,从查询的设计角度看,什么都不输入自然是要匹配所有数据,相反输入了东西就是匹配它了。 ***************** ***************** 如果你想什么都不输入的时候什么也不返回的话方法如下: 在后台写两个sql,类似如下 if ($name == ""){ $exec="select * from tablename where 1=2"; }else{ $exec="select * from tablename where name like '%$name%'"; 以上,希望对你有所帮助。我描述下 应该是 输入什么就出什么(这儿有2个方向,1.模糊查询2.精确查询) 然后不输入就查询全部的 根据你的描述是第一个应该 select * from tablename where name like ''%''+$name+''%'' 大概就是这样的 如果什么都不输入,点“查询”也不会出现任何结果该怎么写? 那就不要用like 直接用=号 把where 后的改为 name = '$name' 因为数据多了like的效能不好给你个思路吧,如果什么都不输入,那么$name的值就是空值,你可以在前台加判断,如果是空值的话那返回就可以了如果是中文可能还有编码问题,为什么不是select * 而是select count(*),页面值是否正确传入servlet?这count 不管如何都有结果的 你最好看看你的notes的值是不是正确? 还有查查是不是因为table_name和where之间没加空格 如何用MYSQL模糊查询··· SQL模糊查询的语法为 “SELECT column FROM table WHERE column LIKE ';pattern';”。 SQL提供了四种匹配模式: 1. % 表示任意0个或多个字符。如下语句: SELECT * FROM user WHERE name LIKE ';%三%'; 将会把name为“张三”,“三脚猫”,“唐三藏”等等有“三”的全找出来; 2. _ 表示任意单个字符。语句: SELECT * FROM user WHERE name LIKE ';_三_'; 只找出“唐三藏”这样name为三个字且中间一个字是“三”的; SELECT * FROM user WHERE name LIKE ';三__'; 只找出“三脚猫”这样name为三个字且第一个字是“三”的; 3. [ ] 表示括号内所列字符中的一个(类似与正则表达式)。语句: SELECT * FROM user WHERE name LIKE ';[张李王]三'; 将找出“张三”、“李三”、“王三”(而不是“张李王三”); 如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e” SELECT * FROM user WHERE name LIKE ';老[1-9]'; 将找出“老1”、“老2”、……、“老9”; 如要找“-”字符请将其放在首位:';张三[-1-9]'; 4. [^ ] 表示不在括号所列之内的单个字符。语句: SELECT * FROM user WHERE name LIKE ';[^张李王]三'; 将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等; SELECT * FROM user WHERE name LIKE ';老[^1-4]'; 将排除“老1”到“老4”寻找“老5”、“老6”、……、“老9”。 !最后是重点! 由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”、“';”的语句无法正常实现mysql 模糊搜索 优化,而把特殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数: function sqlencode(str) str=replace(str,"';","';';") str=replace(str,"[","[[]") ';此句一定要在最先 str=replace(str,"_","[_]") str=replace(str,"%","[%]") sqlencode=str end function如果是通过姓名查找呢,我建议你还是把所有姓都定义好在查询吧(可以通过拼音索引增加软件友好度),这样查询的效率会好很多,总比每次都要把姓名从数据库里拿出来再抽象成模糊查询字段 再查询要快吧。 如果真是可以自己抽象出来所有符合的模糊对象的话,我看快赶上人工智能了,计算量不小。现阶段应该还用不到。用到了,我们也做不出来。 不知道对你有用吗,第二次回答问题。 O(∩_∩)O哈哈~ 再看看别人怎么说的。如果是通过姓名查找呢,我建议你还是把所有姓都定义好在查询吧(可以通过拼音索引增加软件友好度),这样查询的效率会好很多,总比每次都要把姓名从数据库里拿出来再抽象成模糊查询字段 再查询要快吧。 如果真是可以自己抽象出来所有符合的模糊对象的话,我看快赶上人工智能了,计算量不小。现阶段应该还用不到。用到了,我们也做不出来。 不知道对你有用吗,第二次回答问题。 O(∩_∩)O哈哈~ (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |