请教,千万条记录怎么快速查询出来.

时间:2021-08-31 23:24:59
做一个本地搜索,要求速度,请教具体优化方案,包括MYSQL上的和PHP上的.

40 个解决方案

#1


索引加加好千万条数据还是很快的

#2


但是数据还是要增加,请教长久之计

#3


MySQL不懂,-_-!
不过貌似没有绝对最好的方法,必须根据表结构、字段类型、数据量等具体情况制定优化策略。

#4


千万条如何优化也不会很快

#5


1.搞个缓存.实时性不是很高的话.
2.加索引...

#6


索引,你自己小试下,光说没用

#7


分页啊分页

#8


select *from tabel limited <10
来读出数据,
页面也不可能显示出几千万条出来的

#9


1、加适当的索引
2、分表

#10


再怎么多的数据,你一页显示,也就是这么几十条,仔细建好索引是必要的.

但还有一点,数据尽可能不要以文本形式存入表.打个比方说性别字段,你当然可以将'男','女'存入表中,但这样查询时的效果比你用1,0存入表中效果来的慢许多(条数越多越明显)

#11


顶起来继续听听大家的意见.

#12


好像在mysql 5.n之后加入了分表功能什么的。对查询会有效多。没有尝试过。也不知道是不是。:-)

#13


数据库永远都是有瓶颈的,而且排序非常慢,我做的词典搜索,记录才2,300百万,已经很慢了。最好的解决方法是用全文检索,开源代码有Lucense,非常优秀的全文检索,不过是用java写的,PHP也可以调用。全文检索不会随着记录的增加而变慢。

#14


http://smartdict.cn/common.php?lang=cn
这个页面我用了很简单的SELECT * FROM xxx ORDER BY xxx LIMIT 20
花费时间是好几秒,你看到的10几毫秒是经过缓存的结果。
除了缓存没有什么特别好的优化方案。

#15


留个记号学习

#16


顶起来,榨干各位高手的脑细胞~^_^

#17


分页技术是一定要的,不然真的在书库庞大的时候,部分也,检索起来,非常困难了。

还有就是进行程序分类,在查询之前,就对搜索的内容进行预处理,这样绝对会降低数据库的消耗的!

最后的办法就是前面有人提到的全文搜索了。不过全文搜索也有全文搜索的问题……

#18


分表吧。

#19


1:软的:针对不同的数据库应用对数据库进行合理的分割,索引,或者进行分布式处理.
2:硬的:增加硬件投入,着力处理IO瓶颈,例如做集群.

如果涉及到全文搜索,通用的做法是进行倒排索引,用C/C++ 或者Java开发底层查询,索引,缓存 接口.

PHP只负责表现层.

#20


补充一个,把数据库都尽可能的装载的内存中进行处理.别吝啬你的内存.

#21


索引,分区,分表,使用存储过程
建议使用mysql5,可以实现上面的所有功能

#22


倒排索引做不到.

#23


1:建立索引
2:全文索引
3:分词技术
4:硬件。

#24


楼主发错地方了,应该去数据库的版面发的,况且怎么提高搜索效率是DBA的工作,而程序员只是负责写出查询的sql语句编程就可以了。

#25


我以前也是遇到需要优化性能的问题,以下是我的一点心得: 
1.调研查询需求,列出需要查询的方式。
2.根据查询方式,设计索引。(有些时候需要确认表结构是否合理,是否需要重新设计表结构)。我以前有一个Java程序,我分析得出的结论是瓶颈在数据库查询的性能上,它花费了整个过程的95%的时间,所以针对这个查询(主要是看where子句里的查询条件,如果使用Oracle 数据库,它有一个explain plan工具,可以用来分析你的查询是怎么执行的),在数据库中建了索引,性能由前边的61秒减少到2-3秒钟。
3.对于实时查询,尽量使用精确的查询条件。即使有一千万条数据,通常不需要一次全部提取出来。
4.对于需要提取大量数据进行计算(比如:统计报表),考虑设计一个结果表,在晚上或者固定的时间计算,然后把结果保存到这个结果表中。

#26


分库,分表。一般来说,mysql超过50w纪录性能就有数量级的下降。

#27


mysql的分区还不完善,而且对索引有影响

#28


也遇到同样的问题,,,不知道如何解决。。一起学习。。。

分库、分表是什么意思???

#29


因为做的是统计汇总。。所以最后的结果需要以一张表格的形式显示出来,所以没办法分页。。。
不知道具体能怎么解决

#30


能不能分页想都不用想肯定是可以的,这是常识问题。现在哪个上千万的记录不分页的?显示在电脑上也是一屏一屏的,打印到纸上也是一张一张的,这都是分页概念。

#31


越来越激烈了。

#32


你做统计需要同时用那千百万条数据?

#33


汗。。

千万条记录,千万别用MYSQL搜索了,速度N慢,我80万条的速度已经很慢了,用Lucene,它是java的,但可以php调用(好象有被改写过,忘了),你去官方看看
http://lucene.apache.org

#34


KW条不分页显,IE肯定死,打都打不开,分库可选 的,可以考虑用C/C++来查询缓存结果,PHP只负责显示就行

#35


http://community.csdn.net/Expert/topic/5499/5499371.xml?temp=.247265

楼主根本没提分页,人家要的是查询速度;

把索引跟数据分开吧,索引的表最好只有两个字段,一个是id号,另一个是名称
查询时只查名称就应该行了

我的数据库总表有700万条数据库,名称的有200多万,查询速度在1秒内
http://www.mistruster.com/others/chinese.php

#36


关键是建立索引字段,应该按类型和属性进行分类建立,例如帮人家超时商品做数据查询一样,你越分类细的话(索引),查询的时间也不会长。

#37


学习下,希望各位高手多说些经验。我优化基本上是0

#38


一般要做到的.只是建好索引.而内部的一些细节,自有数据库设计提供商去想办法...
建立好合理的索引.一般都可以的...
如果是全文检索的话,,,,这个就不太好说了.....

#39


1,分表,
2,将大字段分离出去(写文件即可)
3,合理建立索引

#40


remark

#1


索引加加好千万条数据还是很快的

#2


但是数据还是要增加,请教长久之计

#3


MySQL不懂,-_-!
不过貌似没有绝对最好的方法,必须根据表结构、字段类型、数据量等具体情况制定优化策略。

#4


千万条如何优化也不会很快

#5


1.搞个缓存.实时性不是很高的话.
2.加索引...

#6


索引,你自己小试下,光说没用

#7


分页啊分页

#8


select *from tabel limited <10
来读出数据,
页面也不可能显示出几千万条出来的

#9


1、加适当的索引
2、分表

#10


再怎么多的数据,你一页显示,也就是这么几十条,仔细建好索引是必要的.

但还有一点,数据尽可能不要以文本形式存入表.打个比方说性别字段,你当然可以将'男','女'存入表中,但这样查询时的效果比你用1,0存入表中效果来的慢许多(条数越多越明显)

#11


顶起来继续听听大家的意见.

#12


好像在mysql 5.n之后加入了分表功能什么的。对查询会有效多。没有尝试过。也不知道是不是。:-)

#13


数据库永远都是有瓶颈的,而且排序非常慢,我做的词典搜索,记录才2,300百万,已经很慢了。最好的解决方法是用全文检索,开源代码有Lucense,非常优秀的全文检索,不过是用java写的,PHP也可以调用。全文检索不会随着记录的增加而变慢。

#14


http://smartdict.cn/common.php?lang=cn
这个页面我用了很简单的SELECT * FROM xxx ORDER BY xxx LIMIT 20
花费时间是好几秒,你看到的10几毫秒是经过缓存的结果。
除了缓存没有什么特别好的优化方案。

#15


留个记号学习

#16


顶起来,榨干各位高手的脑细胞~^_^

#17


分页技术是一定要的,不然真的在书库庞大的时候,部分也,检索起来,非常困难了。

还有就是进行程序分类,在查询之前,就对搜索的内容进行预处理,这样绝对会降低数据库的消耗的!

最后的办法就是前面有人提到的全文搜索了。不过全文搜索也有全文搜索的问题……

#18


分表吧。

#19


1:软的:针对不同的数据库应用对数据库进行合理的分割,索引,或者进行分布式处理.
2:硬的:增加硬件投入,着力处理IO瓶颈,例如做集群.

如果涉及到全文搜索,通用的做法是进行倒排索引,用C/C++ 或者Java开发底层查询,索引,缓存 接口.

PHP只负责表现层.

#20


补充一个,把数据库都尽可能的装载的内存中进行处理.别吝啬你的内存.

#21


索引,分区,分表,使用存储过程
建议使用mysql5,可以实现上面的所有功能

#22


倒排索引做不到.

#23


1:建立索引
2:全文索引
3:分词技术
4:硬件。

#24


楼主发错地方了,应该去数据库的版面发的,况且怎么提高搜索效率是DBA的工作,而程序员只是负责写出查询的sql语句编程就可以了。

#25


我以前也是遇到需要优化性能的问题,以下是我的一点心得: 
1.调研查询需求,列出需要查询的方式。
2.根据查询方式,设计索引。(有些时候需要确认表结构是否合理,是否需要重新设计表结构)。我以前有一个Java程序,我分析得出的结论是瓶颈在数据库查询的性能上,它花费了整个过程的95%的时间,所以针对这个查询(主要是看where子句里的查询条件,如果使用Oracle 数据库,它有一个explain plan工具,可以用来分析你的查询是怎么执行的),在数据库中建了索引,性能由前边的61秒减少到2-3秒钟。
3.对于实时查询,尽量使用精确的查询条件。即使有一千万条数据,通常不需要一次全部提取出来。
4.对于需要提取大量数据进行计算(比如:统计报表),考虑设计一个结果表,在晚上或者固定的时间计算,然后把结果保存到这个结果表中。

#26


分库,分表。一般来说,mysql超过50w纪录性能就有数量级的下降。

#27


mysql的分区还不完善,而且对索引有影响

#28


也遇到同样的问题,,,不知道如何解决。。一起学习。。。

分库、分表是什么意思???

#29


因为做的是统计汇总。。所以最后的结果需要以一张表格的形式显示出来,所以没办法分页。。。
不知道具体能怎么解决

#30


能不能分页想都不用想肯定是可以的,这是常识问题。现在哪个上千万的记录不分页的?显示在电脑上也是一屏一屏的,打印到纸上也是一张一张的,这都是分页概念。

#31


越来越激烈了。

#32


你做统计需要同时用那千百万条数据?

#33


汗。。

千万条记录,千万别用MYSQL搜索了,速度N慢,我80万条的速度已经很慢了,用Lucene,它是java的,但可以php调用(好象有被改写过,忘了),你去官方看看
http://lucene.apache.org

#34


KW条不分页显,IE肯定死,打都打不开,分库可选 的,可以考虑用C/C++来查询缓存结果,PHP只负责显示就行

#35


http://community.csdn.net/Expert/topic/5499/5499371.xml?temp=.247265

楼主根本没提分页,人家要的是查询速度;

把索引跟数据分开吧,索引的表最好只有两个字段,一个是id号,另一个是名称
查询时只查名称就应该行了

我的数据库总表有700万条数据库,名称的有200多万,查询速度在1秒内
http://www.mistruster.com/others/chinese.php

#36


关键是建立索引字段,应该按类型和属性进行分类建立,例如帮人家超时商品做数据查询一样,你越分类细的话(索引),查询的时间也不会长。

#37


学习下,希望各位高手多说些经验。我优化基本上是0

#38


一般要做到的.只是建好索引.而内部的一些细节,自有数据库设计提供商去想办法...
建立好合理的索引.一般都可以的...
如果是全文检索的话,,,,这个就不太好说了.....

#39


1,分表,
2,将大字段分离出去(写文件即可)
3,合理建立索引

#40


remark