MySQLのクエリを介してテキストの処理

検索と更新のためにDBに保存しなければならないURLがたくさんありますが、どのソリューションがパフォーマンスに優れているのですか。

1つの列を含むテーブルに文字列として1ストアURLを格納し、後でdbから文字列を取得して配列に展開し、 array_search 関数を使用してURLを検索します。

stored url : http://site1.com|http://site2.com|....

検索ルーチン:

$is_unique= array_search("$url" ,explode($row['url'] , "|"));

2 - dbテーブルの各URLごとに1行を挿入し、検索と更新のためにクエリを使用します。

2
どのような種類の検索クエリを行いますか?しかし、一般的にあなたはURLごとに1レコードに行くべきです。
追加された 著者 Vyktor,
私はそれも好きですが、テキスト処理はなぜですか?
追加された 著者 bizzr3,
SELECT * FROM ignore_list のようなものですが、url = $ url`
追加された 著者 bizzr3,
いくつかのバグが私のルーチンに来て、array_searchは配列1の既存のURLを見つけることができません: - ? 、あなたが正しいと思います
追加された 著者 bizzr3,
私はそれぞれ新しい行を使用し、読みやすくするためにクリーナーを使い、出力するのに必要なコードを少なくしたいと思います。
追加された 著者 Kyle R,

1 答え

MySQLが検索を処理します。 MySQLはインデックスを使用することができます、array_searchはできません。あなたのURL列にインデックスを宣言してください。次のSQL文を使用して索引を作成できます。

CREATE INDEX url_index ON your_table_name (url);

URLを一括更新すると、トランザクション内で更新をラップすることができます。これにより、更新のたびに更新されるのではなく、コミット時にインデックスが再生成されます。

START TRANSACTION;
[...your update statements go here...]
COMMIT;

Edit: About security, because I have seen it in one of your comments. If a parameter is user supplied, you want to escape your inputs with mysql_real_escape_string():

mysql_query("SELECT * FROM table WHERE url = ('".mysql_real_escape_string($your_url)."'");

For details about security, please read the PHP manual about mysql_real_escape_string() and/or google about SQL injection

1
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com