首页 > 编程知识 正文

mysql 索引优化,oracle创建组合索引语句

时间:2023-05-05 17:49:56 阅读:24078 作者:625

在mysql数据库中,实际创建索引也是一门学问。 在一个表中,索引不是越多越好,适合你的业务是最重要的。 那么,编制索引的时候,我们应该从以下几个方面来考虑。

1 .索引字段越小越好。 毫无疑问,像Varchar(10 )这样比文本类型更有效。

2 .如果需要始终为where、group by、order by等条件,请在该字段中创建索引。

3 .建立连接索引时,将离散度大的列放在前面。 例如,创建名称(name )和年龄)的联合索引时,必须以name开头() index (name,age ) )。 因为age的范围最多不超过0-120。 全世界没有几个人能活到120岁以上吧。 ) name有成千上万种。在此之前,您可以第一次筛选大量数据,从而提高查询效率。

4 .只对经常成为查询条件的字段编制索引。 索引并不是越多越好,所以越多首先会增加磁盘开销。 然后,对于查询,mysql引擎也必须确定是否应该使用该索引。 此外,索引过多还会影响更新、插入和删除的效率。

总之,编制索引时也需要认真考虑,使表的结构更加完善

MySQL什么时候使用索引

对于一个键码,=,=,

select * from table _ name where key _ part1=1and key _ part 25;

slect * from table _ name where key _ part1is null;

使用不以通配符开头的LIKE时

select * from table _ name where key _ part1like ' jani % '

如果在绑定过程中从另一个表中提取行

SELECT * from t1,t2 where t1.col=t2.key_part

找到指定索引的MAX (或MIN )值

selectmin(key_part2),max ) key_part2) from table _ name where key _ part1=10

键码前缀使用ORDER BY或GROUP BY

SELECT * FROM foo ORDER BY key_part1,key_part2,key_part3

查询中使用的所有列都是键码时间的一部分

select key _ part3from table _ name where key _ part1=1

------------- -请参阅

MySQL什么时候不使用索引

如果可以推断MySQL可能比扫描整个表快,则不使用索引。 例如,如果key_part1均匀分布在1和100之间,则不适合在以下查询中使用索引:

select * from table _ name where key _ part1and key _ part 190

如果不使用HEAP表并按=搜索所有键码部分。

在HEAP表中使用订单依据。

如果不是键码的第一部分

select * from table _ name where key _ part2=1

如果使用以通配符开头的LIKE

select * from table _ name where key _ part1like ' % jani % '

搜索一个索引,在另一个索引中创建ORDER BY

select * from table _ name where key _ part1=# order by key 2

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。