ホームページ >バックエンド開発 >PHPチュートリアル >mysql 20Wデータ1Gサイズみたいに使うと極端に遅いので解決してください
mysql 20W データ サイズ 1G のようなものを使用すると非常に遅いので、解決してください (関連する mysql ビデオ チュートリアルの推奨事項: "mysql チュートリアル")
$sql=SELECT *` FROM `text` where `title`LIKE '%bbd%' limit 0,10 $sql=mysql_query($sql);
この方法。 in 1 数秒以内
ただし、いいねの総数を取得したい場合は、10 秒以上と非常に時間がかかります。 。 。解決策を求めてください。 。
$sqll=SELECT `id` FROM `title` where `title`LIKE '%bbd%' $sqll=mysql_query($sql); $num = mysql_num_rows($sqll);
これには 10 秒以上かかりました
------解決策------- - ---------------
スフィンクスを使用して検索できます
- -----解決策----------------------
無理です。テーブル全体をスキャンしています。インデックスを作成できません!
-----解決策---------
$sqll = SELECT count(*) FROM `title` where `title`LIKE '%bbd%' $sqll = mysql_query($sql); list($num) = mysql_fetch_row($sqll);
もっと早いかもしれません
-----解決策---------- - ----------
単純なインデックスの場合は、フルテキスト インデックスを直接使用する必要があります。複雑なインデックスの場合は、サードパーティのストレージを使用します。スフィンクスなどのエンジンはxとかもあり、Doubanが使っています。
-----解決策---------
select * from tableA from content like "xxx%"
mysql がインデックスを使用する唯一の方法のようです。フルテキストがインデックス化されている場合でも、独自のデータベースの実際の状況に基づいて分析する必要があります。
フルテキストはおそらく次のように機能します
1。 MyISAM テーブルにのみ使用されます
2. MATCH (col1,col2,...) AGAINST ('取得された文字列') を使用して
をクエリします。例: フルテキスト インデックスを追加します。テーブルへの列
ALTER TABLE `text` ADD FULLTEXT `fidx_title` (`title`)2. クエリの実行
SELECT * FROM `text`WHERE MATCH (title)AGAINST ('ddd')難しいと出来ません。 。
-----解決策---------
只有fulltext查询了。mysql一到一定的大小,就奇慢无比。
-----解決策---------------------------- --
InnoDB MySQL にトランザクション (コミット) とロールバック (ロールバック) およびクラッシュ回復機能のトランザクションセーフ (ACID 準拠) テーブルを提供します。 InnoDB は、Oracle タイプと一貫した SELECT での行ロック (行レベルでのロック) と非ロック読み取りを提供します。これらの機能により、マルチユーザーの同時操作のパフォーマンスが向上します。
5. LOAD TABLE FROM MASTER 操作は InnoDB では機能しません。ただし、追加の InnoDB 機能の場合は、まず InnoDB テーブルを MyISAM テーブルに変更します。 (外部キーなど) テーブルは適用されません。
------解決策------------------
innodb+ フルテキストインデックスが必要な場合は、変更するだけですスフィンクス、メインへ 読み取りと書き込みの分離から完了する