1

私はこのクエリを使用します:

$result_members = mysql_query("SELECT * FROM members");

結果は、次のように管理ページの表に表示されます。

while($row = mysql_fetch_array($result_members))
{
$id = $row['id'];
$firstname = $row['firstname'];
...

<tr>
 <td><? echo "$id"; ?></td>
 <td><? echo "$firstname"; ?></td>
 ...
</tr>
}

1ページあたり50行を表示するjQueryページ付けと、テーブル内の検索にjqueryオートコンプリートを使用します。

ロードと検索の両方に多くの時間がかかります。数秒から1分まで。私のデータベースには約5.000人のメンバーがいます。

これを行うにはもっと良い方法があると思います。私はmysqlの経験がないので、これをスムーズに機能させる簡単な方法を教えていただければ幸いです。:)

よろしく

Virik

4

3 に答える 3

1

変化する

SELECT * FROM members

SELECT * FROM members LIMIT 200

欠点は、ユーザーの最初の4ページしか表示/検索できないことです。これを回避したい場合は、jQueryページでより多くのデータを動的に要求する必要があります。これにより、桁違いに複雑になります。

この機能を追加する方法

このコードの多くは、使用しているページネーションプラグインによって異なります。一部のプラグインにはサポートが統合されていますが、他のプラグインではハッキングする必要があります。

ただし、実際には変わらないことの1つは、サーバー側のものです。与えられた結果のページを返すだけの2番目のPHPスクリプトが必要です。これが1つです。

fetch_page.php

<?
define('RESULTS_PER_PAGE', 50);
$page = $_GET['page];
$page = (int) $page; // Cast to int to prevent sql injections and let us do math on it.

$start = $page * RESULTS_PER_PAGE;
$end = ($page + 1) * RESULTS_PER PAGE;

$result_members = mysql_query("SELECT * FROM members LIMIT $start, $end");

while($row = mysql_fetch_array($result_members))
{
$id = $row['id'];
$firstname = $row['firstname'];
...

<tr>
 <td><? echo "$id"; ?></td>
 <td><? echo "$firstname"; ?></td>
 ...
</tr>
}
?>

これを検索することはまったく別の問題であることに注意してください。検索を行うには2つの方法があります。

1)サーバーからクライアントにすべてのデータをロードします。これはかなり遅いです。特に、javascript / DOMは、大量のデータを保存/検索するための正しい方法ではないためです。ただし、まとめるのは簡単です。

2)データベースサーバーで検索を実行し、結果をクライアントに返します。これもかなり複雑です。

この追加された複雑さが正当化されるかどうかを検討する必要があります。なぜユーザーテーブルを検索する必要があるのですか?

于 2012-08-12T19:33:49.900 に答える
0

MySQLのLIMIT句を見てください。あなたがしたいのは、それを使ってあなたが望む50行だけを選択することです。

于 2012-08-12T19:31:40.927 に答える
0

データベース関連の速度低下だけではないかもしれません。また、コンピュータが最初にHTMLを処理し、次にjQueryのページ付けを処理することによっても発生する可能性があります。とにかく、ページ付けされていても、5000行をクエリして同じページに表示することはお勧めできません。

Maybe you would be interested in flexigrid.info - a nice javascript solution that displays data from your database. It not only loads data as you need it, but also allows sorting and some manipulations(row adding and deleting).

于 2012-08-12T19:40:28.073 に答える