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

MySQLのすべてのバージョン(Microsoft SQL Serverではありません)。質問に関連する場合は、mysql-5.7のようなバージョン固有のタグも追加してください。

2
mysqlがクエリによる注文に間違ったインデックスを使用するのはなぜですか?
以下は、約10,000,000行のデータを持つ私のテーブルです CREATE TABLE `votes` ( `subject_name` varchar(32) COLLATE utf8_unicode_ci NOT NULL, `subject_id` int(11) NOT NULL, `voter_id` int(11) NOT NULL, `rate` int(11) NOT NULL, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`subject_name`,`subject_id`,`voter_id`), KEY `IDX_518B7ACFEBB4B8AD` (`voter_id`), KEY `subject_timestamp` (`subject_name`,`subject_id`,`updated_at`), KEY `voter_timestamp` (`voter_id`,`updated_at`), CONSTRAINT `FK_518B7ACFEBB4B8AD` FOREIGN KEY (`voter_id`) REFERENCES `users` (`id`) ) …

4
迷惑なMySql更新コンソールを無効にする方法
私はmysql 5.7をインストールし、時々(数日に1回)更新を探します(理解しています)。コンソールウィンドウが数秒間開いてから消えます。今回は映画を見ていて、このコンソールがプレイヤーの上にあります。それは本当に迷惑です、なぜMySqlはこのユーザーフレンドリーでない方法で更新していますか?サイレントモードで実行するように構成できますか?
9 mysql  windows 

1
MySQL->テーブルをループし、各エントリでストアドプロシージャを実行します
私は「本」(子供向けの短編小説)のデータベースを持っています。本の各単語の単語数を知ることは非常に有益です。 私は各単語の単語数を取得する方法を理解しました: SELECT SUM ( ROUND ( (LENGTH(pageText) - LENGTH (REPLACE (pageText, "Word", ""))) /LENGTH("Word") ) ) FROM pages WHERE bookID = id; これは単語を数えるのに素晴らしい働きをします。しかし、それは私が各本を読み、各単語を取り出し、その関数を実行する必要があります(私はそれをストアドプロシージャとして保存しています)。 重複のない、各単語を含むテーブルがあります。 私の質問:ストアドプロシージャを使用してWordsテーブルで何らかの "for each"ループを実行する方法はありますか? すなわち。ストアドプロシージャに書籍IDと単語を渡して、結果を記録します。すべての本のために、すべての言葉を行う。したがって、多くの手動時間を節約できます...これは私がDB側からでも行う必要があることですか?代わりにPHPで試す必要がありますか? 正直なところ、どんな入力でも大歓迎です!

2
MySQL 5.5でPostgreSQLのような部分インデックスを作成するには
大きなデータがあり、一度に選択するデータの間隔が小さいので、選択は常に順序どおりになります。私はそのような目的をターゲットにしたMySQLの部分インデックスのようなPostgreSQLを実装しようとしています。部分一意制約が必要な制約と同じかどうかはわかりません。 PostgreSQL 9.4のコード CREATE UNIQUE INDEX dir_events ON events (measurement_id) USING btree (eventBody) WHERE is_active; MySQLでのypercubeの部分インデックスの試行 CREATE UNIQUE INDEX dir_events [index_type] -- TODO what here? ON events (measurement_id, is_active) [index_type] -- TODO what here? MySQL 5.5などでPostgreSQLのような部分インデックスをどのように作成できますか?
9 mysql  index 

2
mysqlパスワードハッシュが内部的にスター(アスタリスク)で保存されるのはなぜですか?
私はいくつかのmysqlの内部を読んでいましたが、私のmysqlシェルでmysql.userテーブルを通過すると、 mysql> select * from mysql.user limit 1 \G *************************** 1. row *************************** Host: localhost User: root Password: *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B パスワードは明らかにハッシュ化されていますが、なぜスター(アスタリスク)で始まるのですか?

2
ビューに権限を付与し、テーブルの選択を拒否する
MySQLユーザーがいて、データベース内の他のテーブルではなく、必要なビューのみを表示したい。次のように、特定のビューでのみこのユーザー権限を付与しました。 GRANT SHOW VIEW ON `myDatabase`.`awesome_view` TO 'thisUser'@'%' show grants;ステートメントを実行すると、期待どおりにこの権限しか表示されません。ただし、このユーザーに、これらのビューに関連するテーブルではなく、ビューだけをクエリしてもらいたいのですが、これを行う方法が見つかりません。ユーザーがビューで選択を行うようにしたい場合、テーブルに対しても選択を許可する必要がありますか、それとも間違っていますか? select残りのテーブルのステートメントを拒否し、コマンドラインで選択を実行しようとすると、次のようになります。 SELECT * FROM myDatabase.fordibenForYouTable; ERROR 1142 (42000): SELECT command denied to user 'thisUser'@'localhost' for table 'fordibenForYouTable' それが本当に欲しいことですが、ビューデータを選択した場合も拒否されました。 テーブルではなくビューのみをユーザーが利用できるようにする方法はありますか?

3
MySQLの大きなテーブルの一括削除
通知テーブルには、Amazon IODSに1000 IOPSのホストである約1億行が含まれており、1か月より古い行を削除したいと思います。 実行するとDELETE FROM NOTIFICATION WHERE CreatedAt < DATE_SUB(CURDATE(), INTERVAL 30 day);、すべてのIOPSが取得され、プロセスに数時間かかり、「ロック待機タイムアウトが超過しました。トランザクションを再起動してください」という理由で、多くの新しいエントリを挿入できません。 ここで説明する方法を実行しようとしました:http : //mysql.rjweb.org/doc.php/deletebig ただし、増分IDの代わりにUUIDを使用しています。 挿入/更新される新しいデータに影響を与えずにそれらの行を削除するための正しい効率的な方法は何ですか?

5
MySQLクエリ変数に相当するPostgreSQLですか?
これらのタイプのMySQLクエリをPostgreSQLに適応させる簡単な方法はありますか? MySQLのように変数を設定する set @aintconst = -333 set @arealconst = -9.999 ないようです。 SELECTクエリから変数を割り当て、それらの変数を後で私のSQLで使用する: select @pfID := id from platform where bios like '%INTEL%' select @clientID := id from client where platformID = @pfID 特に(2)については、ポインタに非常に感謝します。

2
選択クエリは必要以上に時間がかかります
私は、MySQLデータベーステーブルに約2300万件のレコードがあります。一意のものがないため、このテーブルには主キーがありません。2つの列があり、両方にインデックスが付けられています。以下はその構造です。 以下はそのデータの一部です。 今、私は簡単なクエリを実行しました: SELECT `indexVal` FROM `key_word` WHERE `hashed_word`='001' 残念ながら、これはデータを取得して表示するのに5秒以上かかりました。私の将来のテーブルには1500億のレコードがあるため、今回は非常に高いです。 私はExplainコマンドを実行して何が起こっているのかを確認しました。結果は以下のとおりです。 次に、以下のコマンドを使用してプロファイルを実行しました。 SET profiling=1; SELECT `indexVal` FROM `key_word` WHERE `hashed_word` = '001'; SHOW profile; 以下はプロファイリングの結果です。 以下は私のテーブルに関するいくつかの詳細です: では、なぜこれほど時間がかかるのでしょうか。それらもインデックス化されています!将来はたくさんのLIKEコマンドを実行する必要があるので、時間がかかりすぎています。何が悪いのでしょうか?

1
Amazon RDSのデータベース接続が多すぎる
Drupalでクエリ/ビューを実行しているユーザーに問題があり、サイトがフリーズすることがあります。フリーズが発生するのは、クエリによってデータベース接続の数が最大400以上になり、基本的にサイトが100を超えるデータベース接続を行うと、サイトの速度が大幅に低下し、応答しなくなるためです。 MySQL Red Hat Linuxを使用してAmazon RDSを実行しています フロントエンドアプリサーバーには十分な大きさのEC2があり、十分な大きさのRDSがあります。 この問題を修正する方法は、問題のあるクエリを見つけて強制終了することです。クエリが強制終了されると、データベース接続は約20に低下します。これは、サイト統計を監視するときに表示される通常の量です。 問題のあるクエリを停止し、実行時間が長すぎて接続を消費する前にそれを強制終了する方法はありますか?不正なクエリが発生する前に強制終了することを自動化するか、少なくとも30秒後に不正なクエリを認識して強制終了します。

4
Linuxターミナルを介してMySQLストアドプロシージャを作成する方法
mysqlコンソールでは、delimiterコマンドを使用して区切り文字を変更します。手順を定義すると便利です。delimitermysqlクライアントのみのコマンド(クライアント側コマンド)を理解しました 。 しかし、私はのdelimiter ようなコマンドを持たないmysqlクライアントdbslayerを使用しています。この種のクライアントでは、どのようにプロシージャを定義できますか。 今のところ検討: create procedure test_pro() begin select 'hello pro'; end 私は以下を試しました: mysql -u root -pmypass test < proc_file ここで、proc_fileには上記の手順が含まれています。 しかし、それは私に次のエラーを与えています: ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right …

6
MySQL-エラー1045(28000):ユーザーのアクセスが拒否されました
Ubuntu 10.04.2 LTSの新しいコピーを新しいマシンにインストールしました。MySQLにrootとしてログインしました。 david@server1:~$ mysql -u root -p123 replという新しいユーザーを作成しました。ホストは空白のままにしたので、新しいユーザーはどこからでもアクセスできます。 mysql> CREATE USER 'repl' IDENTIFIED BY '123'; Query OK, 0 rows affected (0.00 sec) ユーザーテーブルをチェックして、新しいユーザーreplが正しく作成されたことを確認しました。 mysql> select host, user, password from mysql.user; +-----------+------------------+-------------------------------------------+ | host | user | password | +-----------+------------------+-------------------------------------------+ | localhost | root | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | | server1 | …
9 mysql 


4
MySQLが非常に多くの一時MYDファイルを生成するのはなぜですか?
多くのPHP / MySQL Webサイト(フォトギャラリー)をホストしているDebian Linuxサーバーでは、のような「多数の」ファイルがある場合があります/tmp/#sql_6405_58.MYD。 たとえば、今日: [2012-12-15 15:18:11] /tmp/#sql_6405_6.MYD : 88MB [2012-12-15 15:18:11] /tmp/#sql_6405_3.MYD : 22MB [2012-12-15 15:18:11] /tmp/#sql_6405_4.MYD : 138MB [2012-12-15 15:18:11] /tmp/#sql_6405_10.MYD : 88MB ... [2012-12-15 15:18:11] /tmp/#sql_6405_9.MYD : 15MB [2012-12-15 15:18:11] /tmp/#sql_6405_65.MYD : 49MB [2012-12-15 15:18:11] /tmp/#sql_6405_44.MYD : 69MB (同時に59ファイル、6GB以上の場合...はい/ tmpの大きなファイルを監視します) 残念ながら、/tmpと同じパーティション上に/あり、一時的にWebサーバーが壊れ/ます。その後、ファイルが消え、サーバーは通常の状態に戻ります。 すべてのファイル名は#sql_6405_*.MYDパターンに従います。どのMySQL操作が非常に多くの一時ファイルを意味するのかを理解したいと思います。このサーバーには約2000のデータベースがあります。どのデータベースが関係しているかを知ることは可能ですか?

3
LIMITで行数をCOUNTする方法は?
X行をキャッチしたいので、を設定しLIMIT Xます。しかし、行の総数も同時に数えるにはどうすればよいですか? 現在、私は2つの別々のクエリを使用してそうしています SELECT COUNT(*) FROM col WHERE CLAUSE SELECT * FROM col WHERE CLAUSE LIMIT X これを1つのクエリで行う方法はありますか? 編集:出力はcolセルと行数でなければなりません。実際、colセルを選択した後は、テーブルの上を歩いて数えるだけです。 最初の行は1行を返し、2番目のX行を返すため、これら2つのクエリをマージすることはできません。が存在する場合にmysqlに行数を返す関数があるかどうか、私は興味がありLIMITます。

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