0

このクエリスクリプトを使用してmysqlデータベースを検索しようとしています http://www.ar-php.org/Examples/ArQuery.php

テーブル内の1つの列のみを検索していますが、各行のその列には約3000文字の長さのテキストがあります。現在100行しか追加していませんが、すでに速度が低下しています。

このような100万行がある場合、このスクリプトは使用できなくなりますか?

このスクリプトを使用して、長いテキストで何百万もの行を作成できるようにするには、どのルートを取る必要がありますか。

私のクエリは次のようになります。

SELECT * FROM articlesWHERE(REPLACE(text、'ـ'、'')REGEXP'(كَ | كِ | كُ | كً | كٍ | كٌ | كْ | كّ | كَّ | كِّ | كُّ | كًّ | كٍّ | كٌّ | ك)( يَ | يِ | يُ | يً | يٍ | يٌ | يْ | يّ | يَّ | يِّ | يُّ | يًّ | يٍّ | يٌّ | ي)(فَ | فِ | فُ | فً | فٍ | فٌ | | فُّ | فًّ | فٍّ | فٌّ | ف)')

SELECT * FROM articlesWHERE(REPLACE(text、'ـ'、'')REGEXP'hell(ö|o|ô|Ö|O|Ô)')

4

1 に答える 1

1

@アリ・ヘイダー

フル テキストインデックスと関連する MySql 関数を使用することをお勧めします。正規表現は、比較的小さなテキストには有効で効率的ですが、データベース内の検索には適していません。フルテキスト インデックスはこのような目的のために設計されており、非常に効率的なデータ構造を使用してディスク I/O を最小限に抑え、大きなデータ内をすばやく検索します。

お役に立てれば。

于 2012-10-27T18:55:33.740 に答える