タグ

ブックマーク / dev.mysql.com (9)

  • MySQL :: MySQL 5.7 Reference Manual :: 27.6 libmysqld, the Embedded MySQL Server Library

    suginoy
    suginoy 2024/03/27
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 12.20.3 MySQL での GROUP BY の処理

    SQL-92 以前では、選択リスト、HAVING 条件または ORDER BY リストが GROUP BY 句で指定されていない非集計カラムを参照するクエリーは許可されません。 たとえば、このクエリーは、選択リストの非集計 name カラムが GROUP BY に表示されないため、標準 SQL-92 では無効です: SELECT o.custid, c.name, MAX(o.payment) FROM orders AS o, customers AS c WHERE o.custid = c.custid GROUP BY o.custid; クエリーを SQL-92 で有効にするには、選択リストから name カラムを省略するか、GROUP BY 句で名前を指定する必要があります。 SQL:1999 以降では、GROUP BY カラムに機能的に依存している場合、オプション機能 T30

    suginoy
    suginoy 2023/12/06
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 8.2.1.18 DISTINCT の最適化

    ORDER BY と組み合わされた DISTINCT では多くの場合に一時テーブルが必要です。 DISTINCT では GROUP BY を使用できるため、MySQL が ORDER BY または HAVING 句内の選択したカラムの部分でないカラムをどのように処理するかを学んでください。 セクション12.20.3「MySQL での GROUP BY の処理」を参照してください。 ほとんどの場合、DISTINCT 句は GROUP BY の特殊な例と考えることができます。 たとえば、次の 2 つのクエリーは同等です。 SELECT DISTINCT c1, c2, c3 FROM t1 WHERE c1 > const; SELECT c1, c2, c3 FROM t1 WHERE c1 > const GROUP BY c1, c2, c3; この同等性のため、GROUP BY クエリ

    suginoy
    suginoy 2023/12/06
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 1.7.3.3 無効なデータに対する制約の施行

    デフォルトでは、MySQL 8.0 は無効または不適切なデータ値を拒否し、発生したステートメントを中断します。 サーバーが厳密な SQL モード (セクション5.1.11「サーバー SQL モード」 を参照) を無効にすることで、データ入力のために有効な値に強制的に強制するなど、無効な値を忘れやすいようにこの動作を変更できますが、これはお薦めしません。 旧バージョンの MySQL では、デフォルトで忘れた動作が採用されていました。この動作の詳細は、Constraints on Invalid Data を参照してください。

    suginoy
    suginoy 2020/03/23
  • MySQL :: MySQL 8.0 Reference Manual :: Function Index

    suginoy
    suginoy 2014/07/22
    MySQLで関数インデックスが使えるようになったのか!と思ったら違った。
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: B.3.2.7 MySQL サーバーが存在しなくなりました

    クライアントはサーバーに書き込むときにエラーを受け取りませんでしたが、問い合わせに対する完全な応答 (または何らかの応答) が得られませんでした。 デフォルトでは、何も発生しなかった場合、サーバーは 8 時間後に接続を閉じます。 この時間制限を変更するには、mysqld を起動するときに wait_timeout 変数を設定します。 セクション5.1.8「サーバーシステム変数」を参照してください。 スクリプトがある場合、クライアントが自動再接続を行うには、クエリーを再発行する必要があるだけです。 これは、クライアントの自動再接続を有効にしている (mysql コマンド行クライアントのデフォルト) ことが前提です。 「MySQL サーバーが存在しなくなりました」というエラーのほかの一般的な原因を次に示します。 ユーザー (またはデータベース管理者) が実行中のスレッドを KILL ステートメ

    suginoy
    suginoy 2014/02/11
    モバイル環境で出やすいっぽい。
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 12.4.2 比較関数と演算子

    比較演算の結果は、1 (TRUE)、0 (FALSE)、または NULL の値になります。 これらの演算は、数字と文字列の両方で機能します。 必要に応じて、文字列は数字に、数字は文字列に自動的に変換されます。 次の関係比較演算子を使用すれば、スカラーオペランドだけでなく行オペランドも比較できます。 = > < >= <= <> != これらの演算子の詳細は、このセクションの後半で説明します。 行サブクエリーのコンテキストにおける行比較のその他の例は、セクション13.2.11.5「行サブクエリー」 を参照してください。 このセクションで示す関数の一部では、1 (TRUE)、0 (FALSE)、または NULL 以外の値が返されます。 LEAST() および GREATEST() はこのような関数の例です。セクション12.3「式評価での型変換」 では、これらの関数と同様の関数によって実行される

    suginoy
    suginoy 2012/08/22
    「IN リストの値の数は、max_allowed_packet 値によってのみ制限されます。 」過激だな。
  • MySQL :: MySQL 5.6 リファレンスマニュアル :: 8.2.1.2 MySQL の WHERE 句の最適化の方法

    読みやすさを犠牲にしても、算術演算を高速化するように、クエリーを書き換えたいと考えがちです。MySQL では同様の最適化を自動的に実行するため、多くの場合にこの作業を回避でき、クエリーを理解しやすく、保守しやすい形式のままにしておくことができます。MySQL によって実行される最適化の一部を次に示します。 不要なかっこの削除: ((a AND b) AND c OR (((a AND b) AND (c AND d)))) -> (a AND b AND c) OR (a AND b AND c AND d) 定数畳み込み: (a<b AND b=c) AND a=5 -> b>5 AND b=c AND a=5 定数条件の削除 (定数畳み込みのために必要です): (B>=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6) -> B=5 OR B=6

    suginoy
    suginoy 2012/08/08
    「クエリ内の他のすべてのテーブルの前に、まず、すべての定数テーブルが読み込まれる」
  • MySQL :: MySQL 5.6 リファレンスマニュアル :: 8.2.1.20 フルテーブルスキャンを回避する方法

    MySQL がフルテーブルスキャンを使用してクエリーを解決する場合、EXPLAIN からの出力には type カラムに ALL と示されます。これは通常は次の条件で発生します。 テーブルがきわめて小さいため、キールックアップで煩わされるよりもテーブルスキャンを実行する方が速くなります。これは、10 行未満の行や短い行長のテーブルによくあります。 インデックスが設定されたカラムに対して、ON または WHERE 句に使用可能な制限がありません。 インデックスが設定されたカラムと定数値を比較していて、MySQL が (インデックスツリーに基づいて) その定数がテーブルのきわめて大きい部分をカバーしており、テーブルスキャンが高速に行われると計算しました。セクション8.2.1.2「MySQL の WHERE 句の最適化の方法」を参照してください。 別のカラム経由で、カーディナリティーが低い (多数

    suginoy
    suginoy 2012/08/08
    FORCE INDEX/ANALYZE TABLE
  • 1