国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

Php+mysql處理大容量數據存儲

2024-07-24 12:56:26
字體:
來源:轉載
供稿:網友
在一個php的論壇上看到了這樣一個貼子,索引將答案貼到這里讓大家看看,希望對大家有幫助

quote:
--------------------------------------------------------------------------------

當數據庫很大如10萬條,1gb大小時,怎樣搜索才高效?
請問版主,我現在在調試一個論壇,向數據庫中寫入了10萬多條信息,此時主要的內容都集中在一個表上,有近1gb大小。
搜索該論壇時很慢,特別是全文搜索時,即使只用
select * from `cdb_posts` where message='本破爛陳舊的小冊子從懷中取出遞給我'

也很慢,在臺式機上甚至根本運行不完。但我聽說sun公司的論壇(下面有近百個分論壇)進行全文搜索時也不超過20秒,我們能否做到。

我運行搜索程序時,cpu和內存占用率都很低,只有硬盤燈一直在閃,我總認為是程序不夠高效,是不是可以把程序寫出類似“多線程”,以提高效率。

請版主和各路大俠指教!
謝謝。

--------------------------------------------------------------------------------



有人建議它用oracle

我覺得有一點大家要注意,那就是如果你讓oracle執行一個 select * from xxxx where xxx = 'xxxxxxxxxxxxxx';

這個表有1g的時候絕對不會比mysql快上多少。

現在的這么多流行的數據庫系統上執行相同的操作時不可能快上很多倍的。

關鍵在于你的數據庫設計。

我在做一個商業信息的搜索引擎,在做的過程中得到一些經驗。如下:

1。 建立摘要表
2。 對于那些數字形式且經常查詢的數據一定要建立索引,我不記得在哪里看到一篇貼子說什么:“不要用那垃圾的索引”.郁悶了n久。這種貼子都有。。哎。
建議: 在where中的用到的尺寸不大的condition一般都要索引。尺寸大的單獨表中存儲且要用like查詢的單獨表中存儲。
3。 對于有很多結果的時候不要select *... ,先select id.... 然后取得id后進行分頁控制,取出當前頁中的id到數組。。 再執行select * from xxx where id in(implode(',', $id數組);
如果得到的數據還要進行join,請在這條select 語句中來進行。因為這樣數據庫進行join的選擇因子會小很多。

4。對于要全文檢索的數據和現在的數據分離出來。以數據庫設計中第二范式的形式表示.在單獨表中存儲和數據主鍵對應的信息.

5。給表加上一個primary , int(smallint、tinyint 看要多少條數據).

6。在做好系統后用explain select .... 對系統中耗時的語句進行分析。看看mysql是如何處理這條語句的。

7。如果有可能,把信息分表存儲(也可分布在不同的數據庫服務器上)

本人禺見,覺得好的頂一看。。覺得差的就當是看個笑話。。。


__________________

本人回答的問題,如無特別注明, 均未測試過....

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肇东市| 晋州市| 铜梁县| 镇宁| 天津市| 仁化县| 嘉祥县| 开阳县| 都安| 景东| 隆德县| 界首市| 永修县| 资溪县| 长垣县| 兴化市| 鹤岗市| 集安市| 凉城县| 镇巴县| 宁国市| 曲周县| 无锡市| 新津县| 兴海县| 杨浦区| 仁化县| 鹤山市| 潢川县| 石屏县| 贵港市| 康乐县| 安龙县| 江北区| 加查县| 启东市| 兴山县| 宣城市| 章丘市| 会同县| 江口县|