咨询个问题,我有18亿条数据,想找个快速的搜索方案
数据格式如下:
column1 column2 column3
xx xx abc
xx xx bc1
xx xx e32
......
.....
....
...
..
.
要求其实是这样,找到 column3是某个特定值的所有列。
然后问题来了,主要是因为数据库的容量太大,18亿条数据,必然有数据是放在磁盘上的,所以导致在遍历过程中必然产生了io请求,最终导致查询变慢。有没有什么有效的办法。
包括硬件的改造。
包括数据存储的改进。
包括软件的改进等。
谢谢。
------最佳解决方案--------------------
全文检索在类似文本模糊查询上具有极大的优势,如果你是等值查询 哈希散列分区可以使用。
如果文本类型上没有包含关系:如 column3 中有 abc 还有 abcd 这样的话
全文索引在查询abc时 可能会把abcd 查出来。
------其他解决方案--------------------索引建了吗?
------其他解决方案--------------------如果你是olap 数据库,建议建立表分区
------其他解决方案--------------------回2楼,索引,已经有了,但是时间是消耗在io上。
会3楼,表分区也有了,关键是仍然要进行全文检索,所以问题还是回到了io上。
------其他解决方案--------------------
增加服务器内存,增大 databuffer
不要使用普通索引,使用oracle全文索引。
------其他解决方案--------------------确实没有用全文索引,那问下,全文索引和普通索引相比,能增加多少性能表现。
此外,全文索引能否和表分区联合使用。
------其他解决方案--------------------
全文索引一般用于BI类大数据量的检索,因为它不会自动维护索引(当然可以通过其他方式变换实现)
对于大数据量数据来讲,性能比普通索引提升效果不是一点半点,具体一句话两句话说不清楚,你百度一下吧。
------其他解决方案--------------------好的,谢谢,你看我的数据结构和应用类型,适合用全文索引吗。
------其他解决方案--------------------等值和包含关系都有
------其他解决方案--------------------
物化视图也可以看看
------其他解决方案--------------------
可以用。
------其他解决方案--------------------用infobright试试。