sql >> データベース >  >> RDS >> Mysql

どちらが速いですか— INSTRまたはLIKE?

    上記のコメントでキビブが指摘したように、フルテキスト検索は絶対に高速になります。

    ただし

    mysql> select COUNT(ID) FROM table WHERE INSTR(Name,'search') > 0;
    +-----------+
    | COUNT(ID) |
    +-----------+
    |     40735 | 
    +-----------+
    1 row in set (5.54 sec)
    
    mysql> select COUNT(ID) FROM table WHERE Name LIKE '%search%';
    +-----------+
    | COUNT(ID) |
    +-----------+
    |     40735 | 
    +-----------+
    1 row in set (5.54 sec)
    

    私のテストでは、まったく同じように動作します。どちらも大文字と小文字を区別せず、通常、全表スキャンを実行します。高性能のMySQLを処理する場合は、一般的にノーノーです。

    インデックス付きの列でプレフィックス検索を実行している場合を除きます:

    mysql> select COUNT(ID) FROM table WHERE Name LIKE 'search%';
    +-----------+
    | COUNT(ID) |
    +-----------+
    |         7 | 
    +-----------+
    1 row in set (3.88 sec)
    

    その場合、接尾辞がワイルドカードしかないLIKEの方がはるかに高速です。



    1. 1列のみのDISTINCT

    2. MongoDBの基本:役割ベースのアクセス制御(RBAC)の構成

    3. #1064-SQL構文にエラーがあります。 MySQLサーバーのバージョンに対応するマニュアルを確認してください

    4. SQLServer2017でビューを作成する