优化索引提升查询效率
使用学术搜索引擎优化:提升论文被检索率 #生活技巧# #学习技巧# #学术研究方法#
要让创建的索引真正有效,是需要一个过程的,不是系统上线之前调一下就行了,而是需要在系统运行过程中,不断调整。
(1)考虑索引本身的特性
在前面的文章中,已经说了,索引的3个特性:有序、索引层数不高、索引包含字段值。
第一个特性是有序,可以用到sql中的 分组操作(group by),排序操作(order by),关联(join)上。
第二个特性是索引层数不高,说明当一个表的数据量越来越多的时候,索引层数可能就增加了1-2层,基本上不会影响查询速度,通过索引仍然可以快速查找、过滤数据。
第三个特性是索引包含字段值,说明索引可以起到覆盖查询的目的,也就是说虽然索引不一定起到过滤、快速查找的作用,但是可以直接扫描索引来取数,而非扫描全表,减少了IO操作,速度自然就快了。
(2)针对具体的sql语句,创建索引
注意索引的前缀原则,也就是起过滤作用的字段,尽量放到最左边。
举个具体的例子:
select ID,name,biz_date
from A
where ID = 1000 and name like 'xxx%'
那么可以创建索引:
create index dix_A on A(id,name)
(3)创建完索引后,要监控索引的使用情况
可以通过如下的代码,查询索引使用情况:
create table txt(id int primary key,v varchar(10))
create index idx_txt_v on txt (v)
insert into txt
values(1,'a'),
(2,'b'),
(3,'c')
select v
from txt
select
DB_NAME(d.database_id),
OBJECT_NAME(d.object_id),
i.name,
user_seeks,
user_scans,
user_lookups,
user_updates
from sys.dm_db_index_usage_stats d
inner join sys.indexes i
on d.object_id = i.object_id
and d.index_id = i.index_id
where database_id = DB_ID('test2')
insert into txt
values(4,'a'),
(5,'b'),
(6,'c')
如果只有user_updates,而没有user_seeks,那么说明创建索引后,只有开销,索引没有起作用。
这种索引,就应该删掉。
网址:优化索引提升查询效率 https://www.yuejiaxmz.com/news/view/871937
相关内容
提升查询效率:索引与SQL操作的策略MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT *、分页查询的优化、合理使用连接、子查询的优化)(上)
MySQL索引原理及慢查询优化(转载)
常识通过网站优化策略,提高搜索引擎抓取效率,助力网站排名提升。
MySQL优化:12种提升SQL执行效率的有效方法
SQL查询优化技巧
MySQL慢查询优化
MySQL使用limit 1提高sql查询效率
提升数据更新速度:索引优化技巧
纳米AI搜索:颠覆传统搜索引擎,提升工作与生活效率