sql优化之加别名

mysql> create table test1(id int primary key,name varchar(10) );
Query OK, 0 rows affected (0.02 sec)

mysql> create table test2(id int primary key,name varchar(10) );
Query OK, 0 rows affected (0.03 sec)

可以看到test1在加别名前不会用到主键索引,而加了后就会用到,是什么原因呢?

另外 看到selecth和update不加别名都会用到主键索引

网上查询;

mysql为什么加个别名就能用到索引
在MySQL中,使用别名(alias)本身并不会直接导致索引的使用。但是,在某些情况下,别名可以间接影响查询优化器的决策,进而影响到是否使用索引。
MySQL的查询优化器(Optimizer)在处理查询时,会分析查询的结构、统计信息(如列的基数、索引的选择性等),以及可能的执行计划来决定是否使用索引。
在某些情况下,即使你在查询中使用了别名,优化器也可能基于别名所在的表达式是否可以被索引覆盖或者是否有助于减少数据扫描量来决定是否使用索引。

mysql delete可以强制使用索引吗?
在MySQL中,DELETE 语句本身并不直接支持强制使用特定的索引来加速删除操作。
mysql>  select * from test2 force index(PRI)  where id=6;
+----+------+
| id | name |
+----+------+
|  6 | ppp  |
+----+------+
1 row in set (0.00 sec)

mysql> delete from test2 force index(PRI)  where id=6;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'force index(PRI)  where id=6' at line 1


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值