我用php做一个模糊搜索引擎,但是一旦mysql数据表数据多了,查询速度就慢了,怎么办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用php做一个模糊搜索引擎,但是一旦mysql数据表数据多了,查询速度就慢了,怎么办?相关的知识,希望对你有一定的参考价值。
1.避免使用!=或<>、IS NULL或IS NOT NULL、IN ,NOT IN等这样的操作符。2.优化SQL语句(让SQL语句更合理一些)。
3.优化数据库字段类型。(能用其他的尽量不要用VCHAR)
4.建立储存过程。 参考技术A 模糊搜索本来就慢,like如果是"%?%"形式时根本就无法用到主键索引,因此必然慢,但是like "?%" 就可以用到索引 参考技术B 数据量大不要使用mysql来做模糊搜索,可以借助其它工具像Lucene之类。 参考技术C 你可以把已查询的数据放在单独的IP上不就可以了么
mysql 字段值不区分大小写
我用php做了个条件查询, 发现是区分大小写的,比如,我数据库里的值是"iPhone", 我在前台页面输入的是"p"(我用的是模糊查询), 结果却搜索不出来, 输入"P"就能搜索出来. 请问,我应该挑那里? 或者mysql是不是有什么函数可以不区分大小写?
sql语句: select * from aaa where name like "%p%"
如果你想稳妥点,查询时可以通过 upper 或是 lower 对字符进行大小写转换。本回答被提问者采纳 参考技术B select
*
from
abc
whre
id="a"
与
select
*
from
abc
whre
id="a"
查询出的结果是不同的
对单个字段设置的方式就不用说了,希望得到是对mysql默认的设置或是对整个库的设置
是否区分大小写和校对规则有关,默认设的规则是大小写不敏感的。
show
create
table如果看到collate是ci结尾,那么就是不区别的,如果cs或bin结尾,就是区别的。
如果建表的时候选择的是区别大小写的规则而查询的时候又暂时不想区别,
可以用类似
where
column_name
collate
latin1_general_ci
=
'xxx'
的写法改变查询使用的校对规则
以上是关于我用php做一个模糊搜索引擎,但是一旦mysql数据表数据多了,查询速度就慢了,怎么办?的主要内容,如果未能解决你的问题,请参考以下文章