問題タブ [unique-index]
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.
database - ほぼ一意のフィールドにインデックスを付ける必要があります
データベースにほぼ一意のフィールドがあります。値は 98% の確率で一意ですが、いくつかの重複がある可能性があります。このフィールドで多くの検索を行うことはありません。月に2回言う。現在、テーブルには約 5000 件のレコードがあり、1 か月あたり約 150 件増加します。
このフィールドにはインデックスが必要ですか?
私はMySQLを使用しています。
mysql - 同じ列に一意のインデックスと通常のインデックスを設定することはどのように間違っていますか?
次のテーブル構造があります
お気づきのとおり、 user_id: date_expired
&に重複したインデックスがありますuser_id
。もちろん、データが一意であることを確認したいので、一意のインデックスが必要です。
インデックスが重複する理由は、インデックスがないuser_id
と、メインの検索クエリに 4 秒かかるためです。追加のインデックスを使用すると、1 秒かかります。クエリは でテーブルを結合しuser_id
、チェックしていdate_expired
ます。
テーブルには 275 レコードしかありません。
- 同じフィールドに一意のインデックスと通常のインデックスを持つことはどれほど悪いことですか?
- テーブルが純粋に ID である場合、データよりも大きなインデックスを持つことはどれほど悪いことでしょうか?
php - PHPの短い一意のID
一意のIDを作成したいのですが、のuniqid()
ようなものを与えてい'492607b0ee414'
ます。私が欲しいのは、tinyurlが与えるものに似たものです:'64k8ra'
。短いほど良いです。唯一の要件は、明確な順序を持たないことと、一見ランダムな数字のシーケンスよりもきれいに見えることです。文字は数字よりも優先され、理想的には大文字と小文字が混在することはありません。エントリの数はそれほど多くないため(最大10000程度)、衝突のリスクは大きな要因ではありません。
任意の提案をいただければ幸いです。
oracle - 複数の列を制約して重複を防ぎ、null 値を無視するにはどうすればよいですか?
これは、Oracle データベース (10g) で実行した小さな実験です。(オラクルの)実装の利便性は別として、一部の挿入が受け入れられ、他の挿入が拒否される理由がわかりません。
いくつかの列の値が不明な行が時々あることが理にかなっていると仮定すると、重複の防止に関連する 2 つの使用例が考え
られます。 1. 重複を拒否したいが、制約された列の値が不明な場合は受け入れたい
2. 制約された列の値が不明な場合でも、重複を拒否したい。
ただし、明らかに Oracle は別のものを実装してい
ます。
ユースケース (2) に到達するために Oracle の実装を利用する方法を考えることができます。しかし、ユースケース(1)に到達する方法がわかりません。
つまり、どうすれば Oracle をこのように動作させることができるでしょうか?
mysql - Navicat の MySQL ビュー - 「主キー」を定義する方法は?
Navicat でビューを定義すると、次のメッセージが表示されることがよくあります。
xxx には主キーがありません。このテーブルへの更新は、次の擬似ステートメントを使用して行われます: UPDATE xxx SET ModifiedFieldsAndValues WHERE AllFieldsAndOldValues LIMIT 1
明らかに、更新ではなく、データの表示にビューのみを使用します。しかし、これは私を興味深くしました:
ビューで「主キー」または「一意のインデックス」を定義する方法はありますか?
sql-server - 重複を許可するSQLServerの一意のインデックス
私はSQLServer2008を使用しており、主キーとしてid(数値)列を持つテーブルがありました。また、3つのvarchar列に一意のインデックスがありました。3つの列のまったく同じセットで行を追加することができました。値に対する簡単なクエリで検証したところ、2行が返されました。
インデックスを編集し、id列を追加しました。もう一度編集してid列を削除しようとすると、行が重複しているとのメッセージが表示され、インデックスは削除されましたが、作成できませんでした。
次に、重複したデータベースをクリーンアップし、一意で非クラスター化されたものと同じ3つのvarcharを使用してインデックスを再作成しました。これで、重複が許可されず、正しく機能するようになりました。
このインデックスの一意性が無視された理由を誰かが知っていますか?
sql-server-2005 - 存在しない重複のためにインデックスを作成できませんか?
次の Transact-SQL コマンドを実行するとエラーが発生します。
エラーは次のとおりです。
メッセージ 1505、レベル 16、状態 1、行 1 オブジェクト名 'dbo.DimMeasureTopic' とインデックス名 'IX_TopicShortName' の重複キーが見つかったため、CREATE UNIQUE INDEX ステートメントは終了しました。重複キー値は () です。
を実行すると、SELECT * FROM sys.indexes WHERE name = 'IX_TopicShortName'
またはSELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[DimMeasureTopic]')
IX_TopicShortName インデックスが表示されません。したがって、重複はないようです。
別のデータベースに同じスキーマがあり、問題なくインデックスを作成できます。ここで作成しない理由はありますか?
cakephp - Cakephp は 2 つのフィールドに固有ですか?
ユーザーが2つの電子メールアドレス(email1とemail2)を入力できる登録フォームがあります。マーケティングの要件は、それらが一意である必要があるということです (10 人のユーザーがいる場合、10*2=20 の一意の電子メール アドレスがあるというように一意です)。
システムはすでに Cakephp で構築されているので、私が知りたいのは、箱から出してすぐにこれを実行できる isUnique 機能 (1 つのフィールドで一意) に似たものがあるかどうかです。それとも、これを自分でコーディングする運命にありますか? 前もって感謝します。
編集:リチャードの例に基づいて構築された、これは私にとってはうまくいきました:
nhibernate - データベースが特定の例外を発生させるかどうかを確認します
Nhibernateを使用します。
いくつかの列に一意のインデックスを持つテーブルにいくつかの値を挿入しようとしています。
特定の挿入によって、一意の制約に違反したために例外が発生するかどうかを知りたいのですが。
では、どの特定の例外タイプをキャッチする必要がありますか?私はこの特定のものだけを捕まえて、他のすべてを上げたいだけです。
どうもありがとう!
sql - 一意のインデックスと競合する複数の行を更新しています
Microsoft SQL Serverを使用していて、詳細の順序を保存する必要があるマスター/詳細シナリオがあります。したがって、詳細テーブルには、ID、MasterID、Position、およびその他の列があります。MasterIDとPositionにも一意のインデックスがあります。1つの場合を除いて、問題なく動作します。既存の詳細があり、順序を変更した場合です。たとえば、位置3の詳細を位置2の詳細に変更した場合、位置2(データベース内の位置は3に等しい)の詳細を保存すると、SQL Serverは、インデックスの一意性の制約のために抗議します。
この問題を合理的な方法で解決するにはどうすればよいですか?
よろしくお願いします
LukaszGlaz