タグ付けされた質問 「indexing」

データ構造のインデックス作成は、データ検索の速度を向上させる一般的な手法です。

4
PostgreSQLがインデックス付きの列で順次スキャンを実行するのはなぜですか?
非常に単純な例-1つのテーブル、1つのインデックス、1つのクエリ: CREATE TABLE book ( id bigserial NOT NULL, "year" integer, -- other columns... ); CREATE INDEX book_year_idx ON book (year) EXPLAIN SELECT * FROM book b WHERE b.year > 2009 私に与える: Seq Scan on book b (cost=0.00..25663.80 rows=105425 width=622) Filter: (year > 2009) 代わりにインデックススキャンを実行しないのはなぜですか?何が欠けていますか?

9
外部キーはクエリのパフォーマンスを向上させますか?
ProductsとProductCategoriesという2つのテーブルがあるとします。両方のテーブルは、CategoryIdに関係があります。そしてこれがクエリです。 SELECT p.ProductId, p.Name, c.CategoryId, c.Name AS Category FROM Products p INNER JOIN ProductCategories c ON p.CategoryId = c.CategoryId WHERE c.CategoryId = 1; 実行プランを作成すると、予想どおり、テーブルProductCategoriesがクラスターインデックスのシークを実行します。しかし、テーブル製品の場合、クラスターインデックススキャンを実行するので、疑問に思います。FKがクエリのパフォーマンス向上に役立たないのはなぜですか? したがって、Products.CategoryIdにインデックスを作成する必要があります。再度実行プランを作成すると、両方のテーブルがインデックスシークを実行します。また、推定されるサブツリーのコストが大幅に削減されます。 私の質問は: FKは関係の制約に役立ちますが、他に何か便利なことはありますか?クエリのパフォーマンスは向上しますか? すべてのテーブルのすべてのFK列(Products.CategoryIdなど)にインデックスを作成する必要がありますか?

3
PostgreSQLは配列の列にインデックスを付けることができますか?
ドキュメントでこの質問に対する明確な答えを見つけることができません。列が配列型の場合、入力されたすべての値に個別にインデックスが付けられますか? 1つのint[]列を持つ単純なテーブルを作成し、そのテーブルに一意のインデックスを配置しました。同じintの配列を追加できないことに気づきました。これは、インデックスが各項目のインデックスではなく、配列項目の複合であると私に思わせます。 INSERT INTO "Test"."Test" VALUES ('{10, 15, 20}'); INSERT INTO "Test"."Test" VALUES ('{10, 20, 30}'); SELECT * FROM "Test"."Test" WHERE 20 = ANY ("Column1"); インデックスはこのクエリに役立ちますか?

2
KEYキーワードの意味は?
このMySQLテーブル定義では: CREATE TABLE groups ( ug_main_grp_id smallint NOT NULL default '0', ug_uid smallint default NULL, ug_grp_id smallint default NULL, KEY (ug_main_grp_id) ); 何をするKEYキーワード意味ですか?これは主キーではなく、外部キーではないので、単なるインデックスですか?もしそうなら、で作成されたこのタイプのインデックスの何が特別なのKEYですか?
141 mysql  indexing 

10
MySQLで一意を削除する方法は?
Create Table: CREATE TABLE `fuinfo` ( `fid` int(10) unsigned NOT NULL, `name` varchar(40) NOT NULL, `email` varchar(128) NOT NULL, UNIQUE KEY `email` (`email`), UNIQUE KEY `fid` (`fid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 一意のキーをドロップするemail方法は?
139 mysql  indexing  sql-drop 

3
SQL Serverインデックス-昇順または降順、どのような違いがありますか?
MS SQL Server(バージョン2005を使用しています)の列または列の数にインデックスを作成する場合、各列のインデックスが昇順または降順のいずれかになるように指定できます。なぜこの選択​​がここにもあるのか理解するのに苦労しています。バイナリソートテクニックを使用すると、ルックアップはどちらの方法でも同じくらい速くありませんか?どの順序を選択すると、どのような違いがありますか?

2
mysqlのdatetimeフィールドにインデックスを付けるのは良い考えですか?
大規模なデータベースの設計に取り組んでいます。私のアプリケーションでは、たとえば、現在400万レコードのテーブルが1つあるなど、多くの行があります。ほとんどのクエリでは、datetime句を使用してデータを選択しています。mysqlデータベースの日時フィールドにインデックスを付けるのは良い考えですか? Select field1, field2,.....,field15 from table where field 20 between now() and now + 30 days データベースを適切に機能させ、クエリがスムーズに実行されるようにしています さらに、高効率のデータベースを作成する必要があると思いますか?
137 mysql  indexing 

9
いつ複合インデックスを使用する必要がありますか?
いつデータベースで複合インデックスを使用する必要がありますか? 複合インデックスを使用することによるパフォーマンスへの影響は何ですか?) なぜ複合インデックスを使用する必要があるのですか? たとえば、私はhomesテーブルを持っています: CREATE TABLE IF NOT EXISTS `homes` ( `home_id` int(10) unsigned NOT NULL auto_increment, `sqft` smallint(5) unsigned NOT NULL, `year_built` smallint(5) unsigned NOT NULL, `geolat` decimal(10,6) default NULL, `geolng` decimal(10,6) default NULL, PRIMARY KEY (`home_id`), KEY `geolat` (`geolat`), KEY `geolng` (`geolng`), ) ENGINE=InnoDB ; それは私は両方のために複合インデックスを使用するために理にかなっていますgeolatし、geolngそのようなこと: 私は交換します: KEY …

3
SQLiteの主キーにインデックスは必要ですか?
SQLiteテーブルで整数列が主キーとしてマークされている場合、その列に対してもインデックスを明示的に作成する必要がありますか?SQLiteは主キー列のインデックスを自動的に作成するようには見えませんが、目的に応じておそらくインデックスを作成しますか?(私は常にその列を検索します)。 文字列の主キーの場合、状況は異なりますか?

7
Pythonでは、別のリストでリストにインデックスを付けるにはどうすればよいですか?
このような別のリストでリストにインデックスを付けたい L = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] Idx = [0, 3, 7] T = L[ Idx ] そしてTは最終的に['a'、 'd'、 'h']を含むリストになるはずです。 より良い方法はありますか T = [] for i in Idx: T.append(L[i]) print T # Gives result ['a', 'd', 'h']
130 python  list  indexing 


7
Oracleの外部キーにインデックスを作成する必要がありますか?
テーブルAとテーブルがありますB。 の主キーに対するA外部キーがあります。BBB_ID 何らかの理由で(正当な理由があることはわかっています)、これら2つのテーブルをキーで結合するときにインデックスを使用していません。 個別にインデックスを作成する必要がありA.B_IDますか、それとも外部キーの存在がそれを提供する必要がありますか?
120 sql  oracle  indexing 

8
リストまたはタプルからアイテムを明示的に選択する
私は次のPythonリストを持っています(タプルにすることもできます): myList = ['foo', 'bar', 'baz', 'quux'] 言える >>> myList[0:3] ['foo', 'bar', 'baz'] >>> myList[::2] ['foo', 'baz'] >>> myList[1::2] ['bar', 'quux'] インデックスに特定のパターンがないアイテムを明示的に選択するにはどうすればよいですか?たとえば、を選択します[0,2,3]。または、1000個のアイテムの非常に大きなリストから選択したい[87, 342, 217, 998, 500]。それを行うPython構文はありますか?次のようなもの: >>> myBigList[87, 342, 217, 998, 500]
120 python  list  select  indexing  tuples 

5
Rails:列を追加した後にインデックスを追加する
tableRailsアプリでテーブルを作成したとします。しばらくして、実行する列を追加します。 rails generate migration AddUser_idColumnToTable user_id:string. 次にuser_id、インデックスとして追加する必要があることに気付きました。add_indexメソッドについては知っていますが、このメソッドはどこで呼び出す必要がありますか?私はマイグレーションを実行することになっていますか(はいの場合、どれですか?)、次にこのメソッドを手動で追加しますか?

1
Pandasはビューとコピーを生成するためにどのようなルールを使用していますか?
データフレームからの選択が元のデータフレームのコピーまたは元のビューであると決定するときにPandasが使用するルールについて混乱しています。 たとえば、 df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9)) 私queryはaがコピーを返すので、 foo = df.query('2 < index <= 5') foo.loc[:,'E'] = 40 は、元のデータフレームには影響しませんdf。また、スカラーまたは名前付きスライスがビューを返すことも理解しています。 df.iloc[3] = 70 または df.ix[1,'B':'E'] = 222 変わりdfます。しかし、もっと複雑なケースになると、私は迷っています。例えば、 df[df.C <= df.B] = 7654321 変更しますがdf、 df[df.C <= df.B].ix[:,'B':'E'] ではない。 パンダが使用している簡単なルールはありますか?これらの特定のケースで何が起こっているか。特に、特定のクエリを満たすデータフレーム内のすべての値(または値のサブセット)をどのように変更しますか(上記の最後の例で試みているように)? 注:これはこの質問と同じではありません。と私はドキュメントを読んだが、それによって啓発されていません。このトピックに関する「関連」の質問も読みましたが、Pandasが使用している単純なルールや、それをどのように適用するか(たとえば、値(または値のサブセット)の変更)がまだありません。特定のクエリを満たすデータフレーム内。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.