mysqlはブール型を返します最初のケースでは、直接戻りますselect id='22aa' from mytest where age=202 は 1 を返し、これは true としてカプセル化できます。 select count(*)=1 from mytest where age=202 は1を返し、これはtrueとしてカプセル化できます。 select count(*)=0 from mytest where age=202 は0を返し、falseとしてカプセル化できます。 select count(*)<3 from mytest where age=202 は1を返し、これはtrueとしてカプセル化できます。 select count(*)<=1 from mytest where age=202 は1を返し、これはtrueとしてカプセル化できます。 select name="aa" from mytest where age=10 name が null の場合、sql はエラーを報告せず、返される結果も null になります。2 番目のケースの sql 3 コードを参照すると、エラーが報告されます。 要約: この状況は、Java の判断文と似ています。ただ、Java では = は代入を意味するため、判断には == が使用されますが、MySQL では、代入には set が使用され、判断には = が直接使用されます。 2番目のケースでは、0または1を返すことでも目的を達成できます。age=202 の mytest から enable を選択すると 1 が返され、これは true としてパッケージ化できます。 select count(*) from mytestは4を返しますが、これはブール型としてカプセル化できますが、falseです。 select enable from mytest where age=201 は null を返します。ブール型としてカプセル化できません。コードは直接エラーを報告します。 select id from mytest where age=202 は '22aa' を返します。ブール型としてカプセル化できますが、false になります。 select id from mytest where age=202 は 'true' を返します。ブール型としてカプセル化できますが、true です。 select id from mytest where age=202 は 'false' を返します。これはブール型 false としてカプセル化できます。 // 特殊なケース select * from mytest エラー selectOne() によって 1 つの結果 (または null) が返されると予想されましたが、見つかりました: 4 select * from mytest where age=202 は、データセット false 2019-08-28 202 15 1 を返します。これは false としてカプセル化できます。 select * from mytest where age=202 は、データセット true 2019-08-28 202 15 1 を返します。これは true としてカプセル化できます。 select * from mytest where age=202 は aaaa2019-08-28 202 15 1 というデータセットを返します。これは false としてカプセル化できます。 要約: Mybatis は、クエリされたレコードの数に基づいて変換します (1=true、0=false) 注意点: 複数のレコード (1 より大きい) が見つかったが、false が返された場合、これは予想とはまったく逆の結果になります。ここでは、他の方法を使用してレコードの数を返すことで判断したり、レコードがデータベース内で一意であることを確認したりできます。最初のケースを直接使用して解決することもできます。 SQL ステートメント 4、5、および 6 のテストによれば、文字列が「true」の場合は true としてカプセル化でき、「false」の場合は false としてカプセル化でき、その他の状況の文字列はすべて false になります。 (これは単なる推測であり、正確ではありません。MySQL の公式 Web サイトで確認する必要があります。返されるフィールドが文字列の場合、それをブール値に変換するためにどのようなルールが使用されますか? Java の文字列からブール値へのメソッドに似ていると思います: Boolean.valueOf("aaa") //false、メソッドは次のとおりです)
MySQL ブール型の落とし穴MySQL では、Boolean は tinyint(1) の別名に過ぎず、つまり MySQL には実際の bool 型は存在しません。しかし、SQLAlchemy は SQL を生成するときにこれを検出しなかったため、問題が発生しました。bool 型をクエリ条件として使用すると、インデックスが使用できず、テーブルスキャンが発生します。 > SELECT COUNT(*) FROM message WHERE message.is_national = 1 AND message.updated_at > '2020-01-01 00:00:00' AND message.deleted_at IS NULL; +----------+ | カウント(*) | +----------+ | 0 | +----------+ セット内の1行 時間: 0.018秒 > SELECT COUNT(*) FROM message WHERE message.is_national is true AND message.updated_at > '2020-01-01 00:00:00' AND message.deleted_at IS NULL; +----------+ | カウント(*) | +----------+ | 0 | +----------+ セット内の1行 時間: 2.162秒 1 行目と 2 行目の時間に注目してください。2 行目ではインデックスが使用されていないことは明らかです。答えを確認するために EXPLAIN の結果を見てみましょう。 > EXPLAIN SELECT COUNT(*) FROM message WHERE message.is_national = 1 AND message.updated_at > '2020-01-01 00:00:00' AND message.de leted_at が NULL です。 | id | select_type | テーブル | タイプ | possible_keys | key | key_len | ref | 行 | 追加 | | 1 | SIMPLE | メッセージ | ref | ix_message_updated_at、idx_updated_at_is_national、ix_message_is_national | ix_message_is_national | 1 | const | 1 | where の使用 | > EXPLAIN SELECT COUNT(*) FROM message WHERE message.is_national is true AND message.updated_at > '2020-01-01 00:00:00' AND messageag e.deleted_at は NULL です。 | id | select_type | テーブル | タイプ | possible_keys | key | key_len | ref | 行 | 追加 | | 1 | SIMPLE | メッセージ | ALL | ix_message_updated_at、idx_updated_at_is_national | <null> | <null> | <null> | 非常に大きな数 | 何を使用するか 再 | これに対して私はただ、それはぼったくりだと言いたいだけです。 上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: モバイルデバイスでのフリーズ問題に対する CSS3 ソリューション (アニメーション パフォーマンスの最適化)
コンテナの起動時に Docker コンテナ内のアプリケーション サービスを自動的に起動する場合。 D...
ユーレカ: 1. JDKイメージを構築するEurekaコンテナを起動するjdkフォルダと必要なファイ...
最初のステップは、Python のバージョン番号とインストール パスを確認することです。 上記のビュ...
キープアライブとは何ですか?通常の開発では、コンポーネントによっては複数回初期化する必要のないものも...
1. MySQL 5.6をインストールした後、正常に有効化できないMySQL の圧縮バージョンは、解...
操作要素の詳細については、前回の記事を参照してください。JavaScript WebAPI、DOM、...
序文リアルタイムのデータベース バックアップの必要性は非常に一般的です。MySQL 自体はレプリケー...
効果は以下のとおりです。 例1 例2:例1[結婚式の計画]を例にとるHTML: <div cl...
1. Nginxのインストール手順1.1 公式サイトの紹介http://nginx.org/en/d...
今日、WordPress がデータベースに接続できないことがわかりました。ウィンドウ サーバーにログ...
目次1. 共通機能分類1.1 単一行関数: 1.2 グループ化機能: 2. 単一行関数3. 数学関数...
目次機能紹介レンダリング1. ホームページレンダリング用のコード(index03) 2. ゲーム開始...
目次echartの初期化アプリベースチャートコンポーネントhtml CS app-base-char...
まずMySQLソースをクエリするdocker 検索 mysql公式ウェブサイトにアクセスしてイメージ...
公式チュートリアルに従って、インストール パッケージをダウンロードし、[インストール] をクリックし...