目次
技巧一、尽量减少磁盘访问
技巧二、使用索引减少内存占用
技巧三、不要到处使用索引
技巧四、索引覆盖查询
技巧五、使用复合索引加快多个查询
技巧六、通过建立分级文档加快扫描
技巧七、AND型查询要点
技巧八:OR型查询要点
ホームページ データベース mysql チュートリアル 【MongoDB】MongoDB之八大优化技巧

【MongoDB】MongoDB之八大优化技巧

Jun 07, 2016 pm 04:10 PM
mongodb 最適化 減らす スキル ディスク

技巧一、尽量减少磁盘访问 内存访问要比磁盘访问快得多。所以使用优化的本质就是尽可能地减少对磁盘的访问。 内存的读取速度要比磁盘速度快一百万倍。读磁盘要消耗很长时间。几种简单的办法:使用SSD(固态硬盘);增加内存可以减少对硬盘的读取,让常用的文

技巧一、尽量减少磁盘访问

内存访问要比磁盘访问快得多。所以使用优化的本质就是尽可能地减少对磁盘的访问。
内存的读取速度要比磁盘速度快一百万倍。读磁盘要消耗很长时间。几种简单的办法: 使用SSD(固态硬盘);增加内存可以减少对硬盘的读取,让常用的文档在内存中;

技巧二、使用索引减少内存占用

索引是有序的,所以不必遍历全部项。当查询时候会先根据索引查到索引中的结果,然后符合条件的文档加载到内存中,从而减少内存占用。

技巧三、不要到处使用索引

这里要注意,不是所有的查询都可以用索引的。索引一般用在返回结果只是总体数据的一小部分的时候。根据经验,一旦要大约返回集合一半的数据就不要使用索引了。
若是已经对某个字段建立了索引,又想在大规模模糊查询时候不使用它(因为使用时候可能较低效)可以使用自然排序,用{“$natural”:1}来强制mongodb禁用索引。自然排序就是“按照磁盘上的存储顺序返回数据”,这样mongodb就不会使用索引了。

技巧四、索引覆盖查询

如果只想返回某些字段且所有这些字段都可放在索引中,mong odb可以做索引覆盖查询(covered index query),这种查询不会访问指针指向的文档,二是直接用索引的数据返回结果。
例如: db.foo.ensuIndex({x:1, y :1,z:1}) 现在查询被索引的字段,并只要求返回这些字段,mongodb就没必要加载整个文档。 db,foo.find({x: ceriteria, y: ceriteria})
这样的查询仅仅访问了索引的数据,而没有访问整个集合的数据;

技巧五、使用复合索引加快多个查询

查询只要和索引开头部分匹配就能利用索引,所以创建索引时要考虑这些查询依赖的所有字段。并且根据各个字段查询的频率定义索引字段顺序;

技巧六、通过建立分级文档加快扫描

将数组组织有层次话,不仅可以让其看着更有条理,还可以让mongodb在偶尔没有索引时候也能快速查询。 如果文档没有层次结构的话,mongodb必须遍历文档中的每个字段。合理使用层次可以减少mongodb对字段的访问。

技巧七、AND型查询要点

假设要查询满足条件A,B和C的文档,满足A的文档有4万,满足B的有9K,满足C的是200,那么应该用C and B and A 这样只需要查询200条记录。
这就是说要是已知某个查询条件更加苛刻,那要将放置在最前面;

技巧八:OR型查询要点

OR型查询与AND查询恰好相反,匹配最多的查询语句放在最前面,因为Mongodb每次都要匹配不在结果集中的文档。







このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Nodejsとvuejsの違い Nodejsとvuejsの違い Apr 21, 2024 am 04:17 AM

Node.js はサーバー側の JavaScript ランタイムであり、Vue.js は対話型ユーザー インターフェイスを作成するためのクライアント側の JavaScript フレームワークです。 Node.js はバックエンド サービス API 開発やデータ処理などのサーバー側開発に使用され、Vue.js はシングルページ アプリケーションや応答性の高いユーザー インターフェイスなどのクライアント側開発に使用されます。

mongodb とはどういう意味ですか? mongodb とはどういう意味ですか? Apr 07, 2024 pm 05:57 PM

MongoDB は、大量の構造化データと非構造化データを保存および管理するために使用されるドキュメント指向の分散データベース システムです。その中心的な概念にはドキュメントのストレージと配布が含まれ、その主な機能には動的スキーマ、インデックス作成、集約、マップリデュース、レプリケーションが含まれます。コンテンツ管理システム、電子商取引プラットフォーム、ソーシャル メディア Web サイト、IoT アプリケーション、モバイル アプリケーション開発で広く使用されています。

Windows 11でダウンロードしたファイルの保存ディスクを設定する方法 Windows 11でダウンロードしたファイルの保存ディスクを設定する方法 Apr 20, 2024 pm 06:32 PM

Windows 11 システムを初めて使用するユーザーの場合、通常、ファイルのダウンロード パスはシステムのデフォルト設定に従い、ファイルはシステム ディスクに保存されることが多く、長期的には占有してコンピューターの全体的なパフォーマンスに影響を与える可能性があります。システムディスク容量が多すぎます。記憶域スペースをより合理的に管理および割り当てるためには、Windows 11 システムでダウンロードしたファイルの保存ディスクをカスタマイズする方法を学ぶことが重要です。この記事では、ユーザーのパーソナライズされたストレージのニーズを満たすために、Windows 11 でダウンロードされたファイルのターゲット ディスクを柔軟に設定する方法について詳しく説明します。これが必要な場合は、読み続けてください。この実用的な機能の詳細な手順を紹介します。操作方法 1. デスクトップ上の「このPC」をダブルクリックして開きます。 2. 次に、左側の列で新しいインターフェイスを見つけます。

C++ プログラムの最適化: 時間の複雑さを軽減する手法 C++ プログラムの最適化: 時間の複雑さを軽減する手法 Jun 01, 2024 am 11:19 AM

時間計算量は、入力のサイズに対するアルゴリズムの実行時間を測定します。 C++ プログラムの時間の複雑さを軽減するためのヒントには、適切なコンテナー (ベクター、リストなど) を選択して、データのストレージと管理を最適化することが含まれます。クイックソートなどの効率的なアルゴリズムを利用して計算時間を短縮します。複数の操作を排除して二重カウントを削減します。条件分岐を使用して、不必要な計算を回避します。二分探索などのより高速なアルゴリズムを使用して線形探索を最適化します。

mongodbを開く方法 mongodbを開く方法 Apr 07, 2024 pm 06:15 PM

Linux/macOS の場合: データ ディレクトリを作成し、「mongod」サービスを開始します。 Windows の場合: データ ディレクトリを作成し、Service Manager から MongoDB サービスを開始します。 Docker の場合: 「docker run」コマンドを実行します。他のプラットフォームの場合: MongoDB のドキュメントを参照してください。確認方法: 「mongo」コマンドを実行して接続し、サーバーのバージョンを確認します。

navicat の有効期限が切れた場合の対処方法 navicat の有効期限が切れた場合の対処方法 Apr 23, 2024 pm 12:12 PM

Navicat の有効期限の問題を解決するには、ライセンスを更新する、自動更新を無効にする、Navicat プレミアム エッセンシャルの無料バージョンを使用する、などがあります。

Nodejsのフロントエンドとバックエンドの区別 Nodejsのフロントエンドとバックエンドの区別 Apr 21, 2024 am 03:43 AM

Node.js は、フロントエンド (ユーザー インターフェイスと対話の処理) とバックエンド (ロジックとデータの管理) の両方に使用できます。フロントエンドは HTML、CSS、JavaScript フレームワークを使用し、フロントエンドは Node.js フレームワーク、データベース、クラウド サービスを使用します。焦点が異なります (フロントエンドはエクスペリエンスに重点を置き、バックエンドは機能に重点を置きます)、実行環境も異なります (フロントエンドはブラウザー内にあり、バックエンドはサーバー上にあります)。ツールも異なります。両者は異なります (フロントエンドとバックエンドは異なるコード コンパイルとパッケージ化ツール セットを使用します)。どちらも JavaScript を使用しますが、異なる API とライブラリにアクセスします。

フロントエンドでnodejsを学ぶのは難しいですか? フロントエンドでnodejsを学ぶのは難しいですか? Apr 21, 2024 am 04:57 AM

フロントエンド開発者にとって、Node.js の学習の難しさは、JavaScript の基礎、サーバーサイド プログラミングの経験、コマンド ラインの習熟度、および学習スタイルによって異なります。学習曲線には、基本概念、サーバー側アーキテクチャ、データベース統合、非同期プログラミングに焦点を当てた入門レベルと上級レベルのモジュールが含まれています。全体として、JavaScript の基礎がしっかりしていて、時間と労力を惜しまない開発者にとって、Node.js の学習は難しくありませんが、関連する経験が不足している開発者にとっては、克服しなければならない特定の課題がある可能性があります。

See all articles