mysql里是不是使用了函数,索引就不能用了? 就是sql语句里,如果使用了mysql的函数,索引就无效了?所以不推荐在sql里使用函数? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SQL语句、函数是什么?贴出来 我记得老版本应该是,现在应该是分函数的吧 用explain看一下。 是的。如果你的语句是 functionName(colname) 或者某些运算 则MYSQL无法使用基于 colName的索引。 col varchar(100), index columnwhere left(col,4) = 'aaa' 这种可以使用索引。 谢,left很少用,一般都like 'aaa%', #4楼应该都用不上索引了。求反例。col varchar(100), index columnwhere left(col,4) = 'aaa' 这种可以使用索引。====错误!这个函数也是不能用索引的。mysql> desc site_quans;+--------------+-------------+------+-----+------------+----------------+| Field | Type | Null | Key | Default | Extra |+--------------+-------------+------+-----+------------+----------------+| id | int(11) | NO | PRI | NULL | auto_increment || user_quan_id | varchar(9) | NO | MUL | | || site_quan_id | varchar(20) | NO | MUL | | || site_id | int(11) | NO | | 0 | || quan_value | int(11) | NO | | 0 | || password | varchar(30) | NO | | | || start_date | date | NO | | 1970-01-01 | || end_date | date | NO | | 1970-01-01 | || status | tinyint(4) | NO | | 0 | || quan_type | tinyint(4) | NO | | 0 | |+--------------+-------------+------+-----+------------+----------------+10 rows in set (0.00 sec)mysql> explain select * from site_quans where left(site_quan_id, 4) = 'aaa';+----+-------------+------------+------+---------------+------+---------+------+------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+------------+------+---------------+------+---------+------+------+-------------+| 1 | SIMPLE | site_quans | ALL | NULL | NULL | NULL | NULL | 1 | Using where |+----+-------------+------------+------+---------------+------+---------+------+------+-------------+1 row in set (0.00 sec) 【求助】求所有用户记录。 求一SQL语句用来确定IP是属于数据库IP段哪个范围 MySql 用查询结果 作表名 创建新表 2个表join for update 重复的记录 如何合并为一条 树形结构中查询出指定第几级父级以下的所有ID号 mysql坏了么? mysql的like查询汉字的时候怎么这么奇怪啊 菜鸟求助!-此计算机上已经安装了同名实例.若要继续执行SQLServer安装程序,请提供唯一的实例名称 MySQL5.5版本后,对单个表的查询,存储过程相比即席查询,优势还有吗? Error 1005, Can't Create Table... my.ini文件设置日志文件后读文件出错
col varchar(100), index columnwhere left(col,4) = 'aaa' 这种可以使用索引。
谢,left很少用,一般都like 'aaa%',
错误!这个函数也是不能用索引的。mysql> desc site_quans;
+--------------+-------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_quan_id | varchar(9) | NO | MUL | | |
| site_quan_id | varchar(20) | NO | MUL | | |
| site_id | int(11) | NO | | 0 | |
| quan_value | int(11) | NO | | 0 | |
| password | varchar(30) | NO | | | |
| start_date | date | NO | | 1970-01-01 | |
| end_date | date | NO | | 1970-01-01 | |
| status | tinyint(4) | NO | | 0 | |
| quan_type | tinyint(4) | NO | | 0 | |
+--------------+-------------+------+-----+------------+----------------+
10 rows in set (0.00 sec)mysql> explain select * from site_quans where left(site_quan_id, 4) = 'aaa';
+----+-------------+------------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+------------+------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | site_quans | ALL | NULL | NULL | NULL | NULL | 1 | Using where |
+----+-------------+------------+------+---------------+------+---------+------+------+-------------+
1 row in set (0.00 sec)