問題タブ [database-indexes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Hibernate @Index アノテーションを使用して DB にインデックスを作成する
プロジェクトに注釈駆動の休止状態機能があります。
今、列にインデックスを作成したいと思います。私の現在の列の定義は
@Index
ここに注釈を追加します。
次に、DROP TABLE を実行し、Tomcat サーバーを再起動します。サーバーがインスタンス化された後、テーブルが作成されますが、次のクエリで新しいインデックスが表示されません。
新しいインデックスでテーブルを構築することが期待されています。MySQL で InnoDB を使用しています。
hibernate - HibernateToolTask (hbm2hbmxml) は、@org.hibernate.annotations.Index 注釈からの hibernate-mapping でインデックスを生成しません
休止状態の注釈を使用して、POJO から休止状態のマッピングを生成しようとしています。次に、liquibase を使用してデータベース スキーマを生成します。そのため、POJO でインデックスを定義する必要があります。
サンプル POJO:
しかし、ant で HibernateToolTask を実行すると、次のようになります。
マッピングでインデックスを取得しません:
同時に、hbm2ddl を実行すると、「インデックスの作成」が生成されます。
マッピングで休止状態にインデックスを生成させるにはどうすればよいですか?
アップデート:
私は、liquibase が注釈を使用してスキーマを生成することを発見したので、問題のこの部分は解決されました。私はまだ別のものを持っています:
既存のデータベースを POJO にリバース エンジニアリングしたいと考えています。POJO はマッピングから生成され、マッピング (jdbcannotation-hbm2hbmxml を使用して生成) にはインデックスがありません。これは本質的に同じ問題だと思います: hbm2hbmxml はインデックスを生成しません。
更新 2:
なぜそれが必要なのですか?既存のデータベース スキーマがあります。以前はそれを変更してから、POJO をリバース エンジニアリングしていました。ここで、POJO を操作し、アノテーションによってマッピングとスキーマを生成したいと考えています。
そのため、現在のデータベース スキーマに一致する POJO を使用して先に進みたいと考えています。どうやら、外部キー名とインデックス以外はすべて一致しています。しかし、hbm2java は @Index アノテーションを生成しません。
このタスクは ddl でインデックスを生成し、POJO でインデックスを生成しません。
database - 柔軟なインデックスを持つデータベース?
ウィキペディアのフォーム: http://en.wikipedia.org/wiki/Index_(データベース)
一部のデータベースでは、関数または式にインデックスを作成できるようにすることで、インデックス作成の機能を拡張しています。たとえば、upper(last_name) にインデックスを作成すると、last_name フィールドの大文字バージョンのみがインデックスに格納されます。サポートされる場合がある別のオプションは、「フィルター処理された」インデックスの使用です。この場合、インデックス エントリは、条件式を満たすレコードに対してのみ作成されます。柔軟性のさらなる側面は、組み込み関数の組み合わせから形成された式だけでなく、ユーザー定義関数のインデックス付けを許可することです。
次のような柔軟なインデックスをサポートするデータベースは何ですか:
- 次のような計算列: (col1 + col2) * 100
- フィルタリングされたインデックス。
- ユーザー定義関数の索引付け。
この機能の既知の用語は何ですか?
mysql - mysql-良い習慣:複数のインデックスを持つテーブル?
申し訳ありませんが、
このミニテーブルには3つの列がありますが、値を1つまたは他の列でリストします。
1)これらの列のうち2つにインデックスを付けても大丈夫ですか?
2)テーブルごとに1つのインデックスのみを設定する必要がありますか?
3)限界として、たとえば100列のテーブルがあり、そのうち50列にインデックスがある場合、これで問題ありませんか?
ありがとう、MEM
mysql - MySQLの日付フィールドにインデックスを付ける
のようなものを使用するクエリで主に使用される日付フィールドにインデックスを配置することには、実際のメリットがありますか?
と
検索は頻繁に行われますが、直接比較することはありません"="。
mysql - mysql でインデックスのステータスを確認する
3,500 万件のレコードを含むテーブルに新しいインデックスを作成し、現在 1 日近く実行しています。以前はインデックスを作成するのに 20 分かかりましたが、列が浮動していました。新しい idnex は varchar(45) にあります
次の出力で、インデックスの作成がまだ進行中であることを示す processlist コマンドを使用しました
クエリが実際に死んでいて、プロセスリストに座っているだけかどうかを調べるためのアドバイスを誰かに教えてもらえないかと思っていました。ある段階で何かがうまくいかなかったのかもしれませんが、私は気づいていません。
ありがとう
nhibernate - nhibernateの複数の一意キー
次の方法で作成された制約が必要です。
私は次のnHibernateマッピングを持っています:
では、説明列だけに個別の一意性制約を追加するにはどうすればよいですか?
sql - このクエリを高速化するには、どの列にインデックスを付ける必要がありますか?
表archdetails
:
表svn3
:
に1
インデックスがありcompname version
、にインデックスがarchdetails
あり ます。; ; と。4
svn3
revno
revno, comp, compname
comp, compname
name, revno, comp, compname
compname のインデックスの長さは 100 です。
クエリの0.16 sec
実行にはまだ時間がかかりますが、これは私の目的には非常に高価です。私はインデックスの経験があまりなく、上記のインデックスは最も頻繁に使用される変数で作成されています。インデックスの進め方について教えてください。
database - いつ、何を使用して列にインデックスを付けるかをどのように知ることができますか?
さまざまなORMのドキュメントでは、インデックスなどを作成する方法を常に提供しています。効率を上げるために適切なインデックスを作成するように常に言及しています。 ORM。インデックス(PK以外)についての私の理解は基本的に次のとおりです。LIKE
列の内容に基づいてクエリ(つまり検索)を実行する場合は、その列に全文インデックスを使用する必要があります。インデックス(主に効率に関する)に関して他に何を知っておくべきですか?玄関先に知識の世界があるような気がしますが、その下に巨大な折り畳まれたマウスパッドが詰まっているので、通り抜けることができません(なぜそう言う必要があると感じたのかわかりませんが、ソファを提供してくれてありがとう)。
database - データベースのインデックス - テーブルのサイズは重要ですか?
つまり、20 列のテーブルは、4 列しかないテーブルよりも、特定のフィールド (検索のようなクエリで使用されるフィールド) にインデックスを作成することでより多くの恩恵を受けるのでしょうか?
また、あまり検索しないフィールドにインデックスを追加することの害は何ですか?インデックスを追加することのマイナス点はありますか? ディスク上で占めるサイズだけですか、それとも不要なインデックスを追加するために動作が遅くなる可能性がありますか?
コメントから抜粋
私は Postgres (最新バージョン) を使用しており、多くの LIKE タイプのクエリなどを実行するテーブルが 1 つありますが、クライアントが CRUD にアクセスできるため、値は間違いなく頻繁に変更されます。インデックスのアイデアはできますか?彼らはただの頭痛ですか?