ホームページ  >  に質問  >  本文

mysql普通索引效率

select * from post where zhuanid = 0 and catid <> 10 and empty =0;
1、本SQL语句:唯一性太差的还要建索引吗 比如empty 就是0或者1 catid一共就8个数 但表数据量是上百万

2、还有2个及2个以上条件查询的 必须要将全部字段建一个复合索引吗

3、如果如上三个字段分别建了一个普通索引 这个and会使用索引吗

对多个查询条件的索引概念比较模糊 但我现在数据库的CPU非常高

巴扎黑巴扎黑2765日前509

全員に返信(3)返信します

  • 高洛峰

    高洛峰2017-04-17 16:40:20

    特定の問題の詳細な分析。一意性が低すぎる場合は、独立したインデックスを作成する必要はありません。結合インデックスを作成し、クエリ ステートメントを調整することをお勧めします。 (zhanid、catid、空)。このステートメントは、zhuanid = 0 および catid in(a,b,c,d,e) および empty =0

    として書き換えられます。

    返事
    0
  • 迷茫

    迷茫2017-04-17 16:40:20

    <> これによりインデックスが削除されましたか?

    否定的なクエリ条件: NOT、!=、<>、!<、!>、NOT IN、NOT LIKE などは、テーブル全体のスキャンになります

    返事
    0
  • 阿神

    阿神2017-04-17 16:40:20

    select が必要かどうかは疑う価値があります。個別にインデックスを作成した場合、mysql オプティマイザーが独自に判断します。カバリングインデックスを使用できます

    返事
    0
  • キャンセル返事