MySQL select xxx from xx where a*a = 100 会走索引吗,怎么改会走索引
时间: 2023-06-10 20:03:58 浏览: 127
根据MySQL的优化器规则,如果where条件中使用了被函数运算的列,将不会使用索引。所以这个查询不会走索引。如果要使其走索引,可以考虑将where条件修改为:where a=10 or a=-10,这样可以避免使用函数运算,从而可以走索引。
相关问题
select * from table where a=1 and b=1 会用到索引吗
如果表中字段a和b都有索引,并且这两个条件是同时出现的,那么MySQL会尝试使用联合索引来优化查询。如果联合索引中包含了字段a和b,那么查询就会使用这个索引,从而提高查询效率。
但是如果只有a或b有索引,或者这两个条件是分别查询的,那么查询就会分别使用这两个字段的索引,而不是联合索引。这时候查询效率可能就没有使用联合索引时高了。
mysql中select * from A where "a" = '1'
这个查询语句的意思是从表A中选择所有的列,然后筛选出"a"等于1的行。
但是,在这个查询语句中,双引号被用来包裹"a",通常情况下我们使用单引号来包裹字符串常量。如果将查询语句修改为如下形式:
```sql
SELECT * FROM A WHERE 'a' = '1'
```
则查询结果会返回A表中所有列,因为'a'和'1'是两个不同的字符串常量,它们永远不会相等,所以查询条件永远不会成立。
因此,如果你想要查询A表中"a"字段等于1的行,应该使用如下语句:
```sql
SELECT * FROM A WHERE a = '1'
```
这里使用了单引号来包裹字符串常量,同时将"a"作为字段名进行筛选。