想请问几个Mysql中的常见但又值得讨论的问题,1、怎样提高Like查询的效率,或有什么替代的办法?不知道怎么算like,是和shell通配符一样么?
先把数据都选出来,用fnmatch匹配一下试试
先把数据都选出来,用fnmatch匹配一下试试
解决方案 »
- 求助啊!XML数组存入数据库问题..
- 求帮忙
- 我安装了Apache HTTP Server,但安装php时找不到相应的web server
- 用preg_match获取网页中body部份内容
- 数组统计
- 关于windows xp下的配置问题??????????????
- 为什么浏览器拒绝显示php文件了……
- 页面必须要放个参数才能运行,为什么呀?我放个空页在网站上测试也必须加个参数
- 求解"&"的用法,绝顶高手入来吧。
- 請大家指教:用戶目錄怎樣設置?如我要把 d:\project\php 設為用戶 laker 的目錄,用localhost/laker 運行 php 程序,不想把程序存于:C:\Prog
- 请问php页面用什么语句来消除页面缓存?
- 有广州的PHP开发者吗?有个网站要做,急!~!
1、很多地方都提到使用了LIKE '%keyword%',特别是多个字段都进行模糊查询,效率会大副下降,但在数据库查询中,这又是不得不经常用到的,那么该怎么提高效率呢?
索引对模糊查询是否起作用?
又其它方法也能达到模糊查询的功能吗?2、看到很多分页的探讨,主要有三种:
最常见的就是limit,第二是先读取,再选择某段范围的数据进行显示,再则是,建立分页的索引表。
第一种,最方便,有没有提高效率的办法?也要使用索引吗?
第二种,好象效率不会高,因为会把数据全部读出来,是这样吗?
第三种,没增加、删除数据都需要维护分页表,太麻烦,并且容易造成数据不统一问题。 有什么更好的建议吗?3、组合索引,title 、id都建立了索引,但不是组合索引,那么当进行 WHERE title = '关键字' AND id > 100 的组合查询时是不起作用的呢?4、读取数据时,先将所有的数据记录读入数组,再对数组进行循环输出,是否会效率很低?另,转两篇关于mysql优化的贴子。
MySQL优化简明指南
http://community.csdn.net/Expert/topic/4810/4810242.xml?temp=.7860681MySql中管理百万级要注意些什么东西
http://community.csdn.net/Expert/topic/4810/4810254.xml?temp=.7779657
2 .用limit不用说了
3 .mysql每条查询只会使用一个索引。
4 .不会。这是最常用的做法。当然前提是你读的数据不会太多。
2、对大容量的字段(text)进行查询应用全文检索索引,但是mysql的全文检索不支持中文(“海量”的除外)
简单的替代解决办法是:
a、切割文字为词组,另存入表中进行查询。由于可利用索引,所以速度很快。只是要增加3-4倍存储空间。具体的做法可见phpBB
b、把文字转换为拼音存入有全文检索索引的字段,可直接利用数据库的全文检索功能,速度更快。也是要增大3-4倍存储空间
3、使用limit是必然的,只取需要数量的记录何了而不为呢?
4、是否“先将所有的数据记录读入数组”完全取决于你对数据的后继处理方式,不存在效率问题。当然,要多用些内存
2 习惯用limit 并可以适当优化(翻页时带上其他限制条件)
3 如果你的查询种类比较固定,那么在应用时可以尝试优化索引。
2.1、to:xuzuning(唠叨),>>切割文字为词组,另存入表中进行查询。由于可利用索引,所以速度很快。只是要增加3-4倍存储空间。
这样我觉得不是3-4倍的问题了,全文检索因为文中的任何一个字符或字符串(包括汉字),都可能被检索,这些可能被检索的字符串都存到索引表里吗?并且是应该在第一次被搜索的时候对内容进行分析,然后把匹配的数据进行记录。是这样吗?这样的话,这个量和效率也值得思考。抱歉,我还没看过phpBB,所以对其做法不了解,以上肯定存在不正确的理解,我等会看看phpBB。
并,我记得唠叨在哪个帖子讨论过这个事情。2.2、我有看到有说使用limit效率会降低很多,有这样的说法吗?特别对于大数据量的数据库。因为它要去定位记录集。2.3、现在有很多分页采用AJAX实现,有两疑问:
1)假如把数据都先取出来再分页,那么相应的数据量(xml数据)会很大,这样岂不是效率更低;
2)假如是对AJAX传递分页参数和查询url,这样每次都仍然是先查询数据记录,再输出,这好象没有太大的意义;2.4、谁能简要讲述下数据库查询的缓存使用方法,是把查询条件和查询结果记录起来,或存储在哪里吗?2.5、两表关联的查询效率和两次单独查询单个表的效率,应该哪个高?
使用limit与读取全部数据的不同之处在于:前者在读取到满足条件的指定数量的记录后就不再读了,而后者是一定要读到全部结束。我不知道那种更占优势,自己评判吧!
2.3、现在有很多分页采用AJAX实现,有两疑问:
.....所以我说“完全取决于你对数据的后继处理方式”
搞混了,不是这个意思。我是看到说limit需要根据起始位置逐条筛选,于是会效率很低;
当然全部读取和它相比更不可取;>>但这种筛选的影响,对大数据量数据(大于10w条)影响有多大;>>我看到有介绍说,对于这样的情况,不应当用limit,而是应该通过建立分页索引表,或其它的方式,先建立连续的id序列,或建立每页id范围的记录表,再根据这个表去分页查询。我是觉得limit的影响有这个大吗?有必要用第二种方法或采用其它方法吗?
一个分页索引基本只能面向某一条sql。维护这个分页索引的代价太大。所以只有数据量超大,而且改动很少的时候才比较实用。