問題タブ [filesort]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - MySQL:INおよびORDERBYを使用する場合はファイルソートを避けてください
私が次のテーブルを持っているとしましょう(それを呼びましょうmy_table
):
の主キーmy_table
はtable_id
(auto_increment)であり、とのキーもmy_field
ありtable_id
ます。
このクエリをテストすると...
...私は得る:
正しいキー()を使用していることがわかりますmy_field
。
しかし、これを試してみると...
...私は得る:
キーをまったく使用していないことがわかります。さらに悪いことに、filesortを使用していることがわかります。
" FORCE INDEX (my_field)
"を実行しても、ファイルソートは実行されます。
ファイルソートを回避する方法はありますか?
mysql - Using filesort to sort by datetime column in MySQL
I have a table Cars with datetime (DATE) and bit (PUBLIC).
Now i would like to take rows ordered by DATE and with PUBLIC = 1 so i use:
But unfortunately when I use explain to see what is going on I have this:
And it takes 0,3 ms to take this data while I have only 100 rows. Is there any other way to disable filesort?
If i goes to indexes I have index on (PUBLIC, DATE) not unique.
Table def:
mysql - MySQLは、「順序付け」を行うときに「filesortの使用」に固執しました
クエリでfilesortの使用を停止できないようです。
これは私の質問です:
テーブル構造:
説明:
編集:クエリ/テーブル構造から不要な部分をいくつか切り取りました。
誰かアイデアはありますか?
mysql - 「ファイルソートの使用」を使用しないようにMySqlクエリを最適化する
「ファイルソートの使用」を避けるためにクエリを最適化するためにあなたの助けが必要です.クエリの仕事は、特定のタグに属するすべての記事を選択することです. クエリは次のとおりです。
テーブル構造は次のとおりです。
タグテーブル
記事表
サンプルデータ
mysql - Mysqlの遅いクエリ:INNER JOIN + ORDER BYによりファイルソートが発生する
このクエリを最適化しようとしています:
テーブルのサイズは 38k 行で、31k と mysql は "filesort" を使用するため、かなり遅くなります。別のインデックスを使用しようとしましたが、うまくいきませんでした。
filesort を使用して mysql を回避するには、どのような種類のインデックスを定義する必要がありますか? 注文フィールドがwhere句にない場合は可能ですか?
更新: プロファイリング結果:
update2:
実際のクエリ (いくつかのブール フィールド、役に立たないインデックス)
空のセット (1.25 秒)
ORDER BY なし — 0.01 秒。
解決
- 「ORDER BY posts_tags.created_at DESC」に更新されたクエリ (アプリ コードの 2 つの小さな変更)
- インデックスが追加されました: index_posts_tags_on_created_at.
それで全部です!
sql - SQLクエリは常にfilesortを句ごとに使用します
orderby句を使用しているSQLクエリを最適化しようとしています。EXPLAINを使用すると、クエリは常に「usingfilesort」と表示されます。このクエリは、ユーザーによる投稿にタグが付けられているグループディスカッションフォーラムに適用しています。
これが私が使用している3つのテーブルです:users、user_tag、tags
user_tagは、ユーザーとそのタグの関連付けマッピングテーブルです。
プログラミングを使用してサーバー側でusage_countを更新します。これが私に問題を与えているクエリです。クエリは、特定のユーザー名のtag_idとusage_countを、使用回数の降順で並べ替えて見つけることです。
説明の出力は次のとおりです。
その「ファイルソートの使用」を失うために何を変更する必要がありますか
ruby - Rubyでは、ディレクトリリスト内のフォルダの前にファイルをどのようにリスト/ソートしますか?
私はルビーのコードに従う必要があります:
それは(例えば)出力します:
次のように出力したい:
基本的には、ディレクトリの前にファイルを表示したいのですが。使用できる並べ替えコマンドはありますか?
mysql - このMySQLクエリのパフォーマンスを改善するにはどうすればよいですか?
MySQLクエリがあります:
クライアントテーブルには約60〜70k行があり、「id」、「record_type」、「date_action」、「company_name」のインデックスがあります。残念ながら、クエリの完了には5秒以上かかります。'ORDER BY'を削除すると、ファイルソートが不要になるため、これは約30ミリ秒に短縮されます。このクエリを変更して5秒以上の応答時間を改善する方法はありますか?
mysql - 「OR」ステートメントを使用する場合のMysqlインデックスの問題
このクエリの機能するインデックスを作成し、「ファイルソート」を取り除く方法はありますか?
インデックス "topcat" (列: topcat1+topcat2+topcat3+approved+id) を作成しましたが、まだ "Using where; Using filesort" を使用しています。
もう 1 つの列を作成できます。たとえば、「all_topcats」を作成して、配列に topcat 番号を格納し、1,5,7 にしてから、クエリ「... where $cid iIN ()...」を実行します。しかし問題は、この場合、「all_topcats」列は「varchar」になりますが、「承認済み」列と「id」列は int になり、いずれにせよインデックスは使用されないということです。
何か案は?ありがとう。
mysql - 原因による並べ替え
私はまだ次の問題があります
ID とタイムスタンプは主キーのペア (mediumint+datetime) dataTypeId は外部キー (mediumint) テーブルはInnoDbとして作成されます
ID が同じでタイムスタンプが異なる (同じアイテムのバージョン) レコードがさらに存在する可能性があります。これがgroup by の理由です。
たとえば、これを読みました:stackoverflowに関する同様のトピック
しかし、それは私の問題を解決しませんでした。
次のインデックスを作成しようとしました。
- (dataTypeId、id、timestamp) のインデックス - この順序で
- (dataTypeId, timestamp) のインデックス - この順序で
- id のインデックス
- タイムスタンプのインデックス
最後の2つは絶望の小さな断片です
何か基本的なことを見逃しているに違いないと思います
が、実際には何がわかりません。
解決策を期待しないでください(それはいいでしょう:)ちょうど私を正しい方法で蹴ってください:)
sort_buffer_size は 4194288 になりました
編集: 説明 - インデックスなし
インデックスを作成して説明する