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

構造化照会言語(SQL)は、データベースを照会するための言語です。質問には、コード例、テーブル構造、サンプルデータ、使用するDBMS実装(MySQL、PostgreSQL、Oracle、MS SQL Server、IBM DB2など)のタグを含める必要があります。質問が特定のDBMSにのみ関連している場合(特定の拡張機能を使用)、代わりにそのDBMSのタグを使用してください。SQLでタグ付けされた質問への回答には、ISO / IEC標準SQLを使用する必要があります。

6
(大きい?)数の値に対するMySQLの「IN」演算子のパフォーマンス
私は最近RedisとMongoDBを試していますが、MongoDBまたはRedisのいずれかにIDの配列を格納する場合が多いようです。MySQL IN演算子について質問しているので、この質問についてはRedisを使用します。 IN演算子内に多数(300〜3000)のIDをリストすることは、どれほどパフォーマンスが高いのか疑問に思いました。これは次のようになります。 SELECT id, name, price FROM products WHERE id IN (1, 2, 3, 4, ...... 3000) 通常は一緒に結合して特定のカテゴリから製品を取得する、製品とカテゴリのテーブルのような単純なものを想像してみてください。上記の例では、Redis()の特定のカテゴリの下で、ID 4のカテゴリからすべての製品IDを返し、演算子内の上記のクエリに配置していることがわかります。category:4:product_idsSELECTIN これはどのくらいのパフォーマンスですか? これは「状況によって異なります」ですか?または、具体的な「これは(受け入れられない)」または「速い」または「遅い」LIMIT 25がありますか、それとも追加する必要がありますか、それとも役に立ちませんか? SELECT id, name, price FROM products WHERE id IN (1, 2, 3, 4, ...... 3000) LIMIT 25 または、Redisによって返される製品IDの配列をトリミングして25に制限し、クエリLIMIT内から3000ではなく25 IDのみをクエリに追加して25に追加する必要がありますか? SELECT id, name, price FROM products WHERE id …


5
org.postgresql.util.PSQLException:致命的:申し訳ありませんが、すでにクライアントが多すぎます
Postgresqlデータベースに接続しようとしていますが、次のエラーが発生します。 エラー:org.postgresql.util.PSQLException:致命的:申し訳ありませんが、すでにクライアントが多すぎます エラーの意味とその修正方法を教えてください。 私のserver.propertiesファイルは次のとおりです。 serverPortData=9042 serverPortCommand=9078 trackConnectionURL=jdbc:postgresql://127.0.0.1:5432/vTrack?user=postgres password=postgres dst=1 DatabaseName=vTrack ServerName=127.0.0.1 User=postgres Password=admin MaxConnections=90 InitialConnections=80 PoolSize=100 MaxPoolSize=100 KeepAliveTime=100 TrackPoolSize=120 TrackMaxPoolSize=120 TrackKeepAliveTime=100 PortNumber=5432 Logging=1
93 java  sql  postgresql  jdbc 

12
SQLデータベースからの単純ランダムサンプル
SQLで効率的な単純ランダムサンプルを取得するにはどうすればよいですか?問題のデータベースはMySQLを実行しています。私のテーブルは少なくとも200,000行であり、約10,000の単純なランダムサンプルが必要です。 「明白な」答えは次のとおりです。 SELECT * FROM table ORDER BY RAND() LIMIT 10000 大きなテーブルの場合、これは遅すぎます。RAND()すべての行を呼び出し(すでにO(n)に配置されています)、それらを並べ替えて、せいぜいO(n lg n)にします。O(n)よりも速くこれを行う方法はありますか? 注:Andrew Maoがコメントで指摘しているように、SQL Serverでこのアプローチを使用している場合はNEWID()、RAND()がすべての行に同じ値を返す可能性があるため、T-SQL関数を使用する必要があります。 編集:5年後 私はより大きなテーブルでこの問題に再び遭遇し、2つの調整を加えた@ignorantのソリューションのバージョンを使用することになりました: 行を希望のサンプルサイズの2〜5倍にサンプリングし、安価に ORDER BY RAND() RAND()挿入/更新のたびに、の結果をインデックス付きの列に保存します。(データセットの更新がそれほど多くない場合は、この列を最新の状態に保つための別の方法を見つける必要がある場合があります。) テーブルの1000アイテムのサンプルを取得するために、行をカウントし、frozen_rand列を使用して結果を平均10,000行までサンプリングします。 SELECT COUNT(*) FROM table; -- Use this to determine rand_low and rand_high SELECT * FROM table WHERE frozen_rand BETWEEN %(rand_low)s AND %(rand_high)s ORDER BY RAND() …

4
投影と選択とは何ですか?
投影と選択の違いは何ですか?それは...ですか: 射影->テーブルの列を選択するため。そして 選択--->テーブルの行を選択しますか? では、投影と選択はそれぞれ垂直スライスと水平スライスですか?

16
スケーラビリティを検討するときに結合が悪いのはなぜですか?
参加が悪い、または「遅い」のはなぜですか。これを何度も聞いたことがあります。この見積もりを見つけました 問題は、結合が比較的遅いこと、特に非常に大きなデータセットの場合、結合が遅い場合、ウェブサイトが遅いことです。これらの個別の情報をすべてディスクから取り出し、それらをすべてまとめ直すには長い時間がかかります。 ソース 特にPKを検索するときは、特に高速だと思っていました。なぜ「遅い」のですか?
92 sql  join 

16
重複するエントリを削除する方法は?
既存のテーブルに一意制約を追加する必要があります。これは問題ありません。ただし、テーブルにはすでに数百万の行があり、行の多くは追加する必要がある一意の制約に違反しています。 問題の行を削除する最も速い方法は何ですか?重複を見つけて削除するSQLステートメントがありますが、実行に時間がかかります。この問題を解決する別の方法はありますか?たぶんテーブルをバックアップしてから、制約が追加された後に復元しますか?


6
ローカルSQL Serverインスタンスへの管理アクセスを自分に許可するにはどうすればよいですか?
SQL Server 2008 R2をローカルマシンにインストールしました。しかし、権利がある(またはない)ため、新しいデータベースを作成できません。 "CREATE DATABASE PERMISSION DENIED" それで、現在のログインに管理者権限を割り当てようとしました 「ユーザーには、このアクションを実行する権限がありません。」 また、管理者権限はあるが運が悪い新しいログインを作成しようとしました。データベースを作成できるように管理者権限を自分に付与するにはどうすればよいですか?再インストールすることはできますが、再インストールはしたくありません。


6
条件付き一意制約
列のセットに対して一意の制約を適用する必要があるが、列の1つの値に対してのみである状況があります。 したがって、たとえば、Table(ID、Name、RecordStatus)のようなテーブルがあります。 RecordStatusは値1または2(アクティブまたは削除済み)のみを持つことができ、(ID、RecordStatus)に一意の制約を作成したいのは、RecordStatus = 1の場合のみです。 ID。 トリガーの作成とは別に、それを行うことはできますか? SQL Server 2005を使用しています。

4
PDO接続を正しく設定する方法
データベースへの接続に関する質問がときどきあります。 ほとんどの答えは私がそれをする方法ではありません、または私はちょうど答えを正しく得ないかもしれません。とにかく; 自分のやり方がうまくいくので、私はそれについて考えたことはありません。 しかし、これはおかしな考えです。多分私はこれをすべて間違っています、そしてそれが事実なら。PHPとPDOを使用してMySQLデータベースに適切に接続し、簡単にアクセスできるようにする方法を本当に知りたいです。 ここに私がそれをやっている方法があります: まず最初に、これが私のファイル構造です(省略されています)。 public_html/ * index.php * initialize/ -- load.initialize.php -- configure.php -- sessions.php index.php 一番上にはがありrequire('initialize/load.initialize.php');ます。 load.initialize.php # site configurations require('configure.php'); # connect to database require('root/somewhere/connect.php'); // this file is placed outside of public_html for better security. # include classes foreach (glob('assets/classes/*.class.php') as $class_filename){ include($class_filename); } # …
92 php  mysql  sql  class  pdo 


5
sqlalchemy:1つのクエリで複数のテーブルを結合する方法は?
次のSQLAlchemyマップクラスがあります。 class User(Base): __tablename__ = 'users' email = Column(String, primary_key=True) name = Column(String) class Document(Base): __tablename__ = "documents" name = Column(String, primary_key=True) author = Column(String, ForeignKey("users.email")) class DocumentsPermissions(Base): __tablename__ = "documents_permissions" readAllowed = Column(Boolean) writeAllowed = Column(Boolean) document = Column(String, ForeignKey("documents.name")) 次のようなテーブルを取得する必要がありますuser.email = "user@email.com"。 email | name | document_name | …
92 python  sql  join  sqlalchemy 

2
単一のSELECTステートメントに複数の共通テーブル式を含めるにはどうすればよいですか?
私は複雑なselectステートメントを簡略化している最中なので、共通のテーブル式を使用すると思いました。 単一のcteを宣言しても問題ありません。 WITH cte1 AS ( SELECT * from cdr.Location ) select * from cte1 同じSELECTで複数のcteを宣言して使用することは可能ですか? つまり、このSQLはエラーを出します WITH cte1 as ( SELECT * from cdr.Location ) WITH cte2 as ( SELECT * from cdr.Location ) select * from cte1 union select * from cte2 エラーは Msg 156, Level 15, State …

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