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非常高
高洛峰2017-04-17 16:40:20
特定の問題の詳細な分析。一意性が低すぎる場合は、独立したインデックスを作成する必要はありません。結合インデックスを作成し、クエリ ステートメントを調整することをお勧めします。 (zhanid、catid、空)。このステートメントは、zhuanid = 0 および catid in(a,b,c,d,e) および empty =0
として書き換えられます。迷茫2017-04-17 16:40:20
<> これによりインデックスが削除されましたか?
否定的なクエリ条件: NOT、!=、<>、!<、!>、NOT IN、NOT LIKE などは、テーブル全体のスキャンになります
阿神2017-04-17 16:40:20
select が必要かどうかは疑う価値があります。個別にインデックスを作成した場合、mysql オプティマイザーが独自に判断します。カバリングインデックスを使用できます