Questions tagged [mysql]

MySQL(マイエスキューエル)は、オラクルが開発するRDBMS(リレーショナルデータベースを管理、運用するためのシステム)。オープンソースで開発されており、GNU GPLと商用ライセンスのデュアルライセンスとなっている。

734 questions
12
votes
4 answers

ORDER BY を指定しない時 / SELECT結果表示並び順 の法則性

MySQL で ORDER BY を指定しない時、SELECT結果並び順 の法則性に関するドキュメントは公開されているでしょうか? ・必要なら、ORDER BY を 指定した方がよいとは思うのですが、指定しない場合は、どういう基準で、並び順を決定しているのでしょうか? ・インデックスは関係する? ・バージョンによって異なる? ・それに関する資料はどこかにない? 質問背景を追記しました。 ・単なる興味本位です ・ORDER BY を 指定しない場合、MySQL…
re9
  • 6,698
  • 29
  • 124
  • 232
4
votes
3 answers

MySQLでのトランザクション未使用でUPDATE文でのデッドロックの発生

MySQLでUPDATEを行っている箇所でデッドロックが発生した原因の調査を行っています。 排他処理は楽観ロックで行い、トランザクションは使用せずUPDATEの実行直後にCOMMITを行い即座にロックを解放しているため、何故デッドロックとなったのか、原因が見当がつかず困り果てています。 ご助力お願いします。 MYSQLバージョン:5.7.12 分離レベル:REPEATABLE…
kumaneko
  • 41
  • 2
4
votes
1 answer

MySQLで真偽値を格納する場合、bit(1)型のフィールドよりtinyint(1)型の方が良い?

最終的にやりたいこと ・MySQL5.7に真偽値を格納したい 知りたいこと ・boolean型、bit(1)型、tinyint(1)型の何れが良い? Q1.boolean リテラルについて ・TRUE および FALSE 定数はそれぞれ 1 と 0 として評価される、と書かれていますが、これはどのようなデータ型に対しても当てはまるのでしょうか? ・例えば、tinyint(1)型に格納された1だけではなく、bit(1)型に格納された1に対しても、SELECTする際「where フィールド名 =…
re9
  • 6,698
  • 29
  • 124
  • 232
4
votes
1 answer

大規模データを利用したMySQLページングの目次生成処理について

MySQLを利用したページングを実装しています。 大規模なデータを利用しているためフルスキャン対策として、Limit…
Osushi
  • 41
  • 1
  • 2
4
votes
3 answers

標準偏差や平均値をグループ毎の上位に関して出したい

select avg(point) from table where (genre毎のpoint上位100位まで) GROUP BY genre; みたいな事がしたいのですが、どうすれば良いでしょうか? ポイント上位を入れたテーブルを作るくらいしか思いつかなかったので…
Taizan Yonetuji
  • 2,846
  • 7
  • 32
  • 51
3
votes
1 answer

MySQL偏差値を求める方法

subject と point カラムがあるtestテーブルに対してsubject毎の偏差値(標準偏差ではなく)を取得したいのですが、どうすればいいでしょうか? 標準偏差と平均値は下記のような感じで取れました。 SELECT subject, STD(point), AVG(point) from test_table GROUP BY…
Taizan Yonetuji
  • 2,846
  • 7
  • 32
  • 51
3
votes
1 answer

MySQL : トランザクションでINSERTする際、Duplicateエラーのみ無視して処理を続けるには

カラムにはユニーク設定をしているので、INSERTはできませんが、トランザクションでINSERTし、Duplicateエラーのみ無視して、次のINSERTの処理を行う方法はありますでしょうか? MySQL バージョン : 5.1.73 ストレージエンジン : InnoDB よろしくお願いします。
user7165
3
votes
1 answer

SELECT の中で値を別テーブルを引いて置換したものに置き換えたい

あるテーブルに key が書かれていて それを別にサブテーブルを引いた結果に置き換えて返したいです サブテーブルが「1:1」なら普通にJOINするだけでいいんですが サブテーブルが「1:多」の関係になってる場合ただJOINしただけだとデータが重複してしまいます users table user | pref_code -----+---------- 1 | 13 2 | 13 cities table pref_code | pref |…
user35303
3
votes
1 answer

mysqlでleft joinした後にid is null としたとき、join の条件が消えてしまう

テーブルA, B, Cがあり、特定のCに関連するAを求めたい。 SELECT * FROM A a INNER JOIN B b ON b.id = a.b_id LEFT JOIN C c ON c.b_id = b.id AND c.type = 'hogehoge' WHERE c.id IS NULL このとき、 c.type = 'hogehoge' 以外の type も抽出されてしまいます。
retake
  • 379
  • 1
  • 7
  • 17
3
votes
1 answer

mysqlで更新クエリの多いテーブルにカラム追加したらDB負荷が高まりサイトが落ちました。

PHP+mysqlでwebサービス稼働中なのですが、更新クエリ(トランザクション)が多く発行されるテーブルに対し日中、ALTER TABLEでカラム1件を追加したところ、DB負荷が高まりサイトアクセスできなくなり、mysqlを再起動せざるを得ない状態となりました。 漢のコンピュータ道氏のサイトによりますと以下のように書かれてあり、これは負荷かかるだろうなと思いました。 まず結論から言うと、なんとMySQLのALTER …
Yusuke Fujita
  • 367
  • 2
  • 4
  • 18
3
votes
2 answers

MySQL 入れ子集合モデル、子から見た親を出力する方法

MySQL入れ子集合モデルで「子から見た親」を出力する方法なのですが、うまくいきません 下記は、categoryを格納しているテーブルです。 下記は、子から見た親を出力するクエリです。 select node.rgt, concat(repeat(' ', count(parent.category_name) - 1), node.category_name) as name, node.category_description from category as node,…
mr.hironobu
  • 145
  • 6
3
votes
1 answer

DBから抽出したレコードを指定キーワード(複数)で絞り込むロジックについて

例として掲示板システムで"コメント"テーブルから新規10件を表示、 但し"NGワード"テーブル(1レコード1NGワードを保持)にあるNGワードが含まれるコメントは 除外したい、というケースを想定して下さい。 NGワードは複数あります。 このようなケースでなるべくコストの少ない検索方法を模索しているのですが 何か良い方法は無いでしょうか。 追加:可能であればNGなコメントも取得自体はしておいてNGであるという状態を持ちたいです。 となるとNGワードテーブルを結合してそのIDがNULLかどうか、とい…
shiro09
  • 213
  • 4
  • 12
3
votes
2 answers

MySQLのバージョン間でのスキーマ違いを吸収する方法

古いMySQLをリプレースする際に、新しいMySQLサーバを準備して、mysqldump等でデータを移行することが多いと思います。 その際にバージョン間でスキーマが異なってくることがあるのですが(特に4.x系→5.x系)、その際にスキーマを変更する効率的な方法があれば教えて下さい。 小さな規模であれば、エラーになった箇所を手作業で変更して・・・が可能なのですが、規模が大きくなるととても大変です。
3
votes
1 answer

MySQLにおけるOPTIMIZE TABLEの仕組み

OPTIMIZE TABLEは「行をDELETEして無駄な領域がたくさん生じたとき時だけで良い」と聞きました。 大人のためのInnoDBテーブルとの正しい付き合い方。 例えばDELETEとINSERTが同数頻繁に行われ、行数が一定な新陳代謝の高いテーブルがあるとします。この時、OPTIMIZE TABLEは必要あるでしょうか? DELETEによって生じた無駄な領域がINSERTによって新しい行に上書きされるのか、OPTIMIZE…
lowcac
  • 396
  • 3
  • 18
2
votes
2 answers

フラグが立っているものを優先して取得するクエリ

例えば、orderはcreated_atですが、flag=trueのものだけ先に取得して、次にそれ以外を取得したい場合、どういう風にクエリを投げるのがシンプルでしょうか?
Taizan Yonetuji
  • 2,846
  • 7
  • 32
  • 51
1
2 3
13 14