表名:tab1
字段1:地标
数据1:A广场,B广场,C大厦,D大厦查询:select * from tab1 where 地标 like '%A%'问题1: like '%A%'这样的查询方式,可以使用索引查询吗?
问题2: 数据1这种数据的索引怎么建立?

解决方案 »

  1.   

    1、不能用到索引;
    2、
    最好这样设计 
    地点 
    A大厦
    B大厦
    C大厦
    D大厦
    在此字段上建立索引
      

  2.   

    这like '%A%'方式 是不能 使用索引的,
    你用FIND_IN_SET、INSTR函数
      

  3.   

    问题1: like '%A%'这样的查询方式,可以使用索引查询吗?
    like '%A%' 不会利用索引的。
    like 'A%' 则可以使用索引。问题2: 数据1这种数据的索引怎么建立?
    根据你这种应用,没有建立索引的必要。建议把表范式化,目前的表结构连第一范式也不符合。
      

  4.   

    第一范式(1NF)中表的每一行只包含一个实例的信息。
    -------------------
    但对于我的表而言。。
    表名:tab1 
    字段1:地标 
    数据1:A广场,B广场,C大厦,D大厦
    字段1:地标都是一个意义啊。。
    且这个字段的数据还是不断更新的。。
    如果分成多个字段。。要很多啊。。明显也不合理啊。
      

  5.   

    mysql> explain 
    select id from items where reviewid like '%45%' limit 5;
    +----+-------------+-------+-------+---------------+-----+---------+------+-------+--------------------------+
    | id | select_type | table | type  | possible_keys | key | key_len | ref  | rows  | Extra                    |
    +----+-------------+-------+-------+---------------+-----+---------+------+-------+--------------------------+
    |  1 | SIMPLE      | items | index | NULL          | ewq | 4       | NULL | 19606 | Using where; Using index |
    +----+-------------+-------+-------+---------------+-----+---------+------+-------+--------------------------+
    1 row in set
    mysql> 为什么key里显示使用了索引???like '%%'这样的不是不能用么