2017-09-06 2 views
-2

現在、JavaScriptテーブルを作成するためにJavascript Datatablesを使用しています。それから私は非常に大きな文字列(約300 - 800kbまたはそれ以上の大きさ)を含む列を持つこの特定のテーブルをクエリするとき、私は非常に遅い気づいた。データベースから長い文字列のプレビューを取得するにはmysqlの部分文字列で十分です

私の最初の解決策は、SQL文でその列を除外し、ユーザーがその特定の行をクリックしたときだけ表示することです。クリック時に長い文字列を取得する簡単なクエリを実行する)

可能な限り、長い文字列のプレビューを表示したいので、mysqlの部分文字列を使用してその長い文字列の最初の100文字のみを表示すると考えました。

私の質問は、mysql効率的な部分文字列を使用しているか、または長い文字列自体を取得するために同じCPU処理とRAMの使用をほぼ使用するでしょうか? 私は関数の部分文字列を使用して、それがより多くのメモリを使用する '全体'文字列自体を読み書きしているかもしれないと心配しています。

私が実装しようとしている最後の解決策は、長い文字列のコピーである最初の100文字しか保存しない別の列を作成することです。基本的にプレビュー専用の列です。これは良いアイデアか悪いものか?

+0

この「長い文字列」の目的は何ですか。それは何らかの形式のデータまたは自由形式のテキストですか? 「非常に遅い」と定義する。いくつかのフィールドだけが必要な場合でも 'SELECT * FROM gigantotable'を使っていますか?要約の列は、ほとんどの場合、データをどのように表示しているのかが悪い考えではありません。 – tadman

+0

@tadman長い文字列は記事のコンテンツ用です。そのテーブルの最も重要なデータです。非常に私は持っているすべてのクエリの残りの部分よりも遅くロードする意味では遅い。私はこの特定のシナリオでportal_id = something limit 10というselect * from tableを使用しています。 –

+0

@symcbeanなぜこの種のシナリオでもっと経験豊富な専門家に尋ねることができるのかをベンチマークするすべてのシナリオ。私の場合、特定のシナリオをテストするのは時間がかかります。私はベンチマークの専門家でもないので、このシナリオでは自分のテストに頼ることはできません。あなたが私の要点を持っているといいなあ –

答えて

0

部分文字列の使用が '全体'文字列を処理していないが、各文字列の開始点を確認して移動するという記事があります。

サーバーのサイズを消費するプレビュー用に新しい列を作成するのではなく、部分文字列関数を使用すると、最小限の処理で長い文字列のプレビューを作成できます。

Substring vs position performance

関連する問題