mysql 排序 (row_number、dense_rank、rank)索引(主键索引、唯一索引、普通索引、全文索引、多列索引)语句执行顺序

mysql 添加索引 mysql 如何创建索引
1.添加PRIMARY KEY(主键索引)
mysql>ALTER TABLE table_name ADD PRIMARY KEY ( column )
2.添加UNIQUE(唯一索引)
mysql>ALTER TABLE table_name ADD UNIQUE ( column )
3.添加INDEX(普通索引)
mysql>ALTER TABLE table_name ADD INDEX index_name ( column )
4.添加FULLTEXT(全文索引)
mysql>ALTER TABLE table_name ADD FULLTEXT ( column)
5.添加多列索引
mysql>ALTER TABLE table_name ADD INDEX index_name ( column1, column2, column3 )

排序
row_number对应唯一排序:1、2、3、4
dense_rank对应相同次序可重复,但不跳过下一个次序值:1、2、2、3
rank对应相同次序可重复,并且跳过下一个次序值:1、2、2、4

where in 可以多个条件一起 如下:
牛客sql67
select du.name as u_n,dc.name as c_n,dl.date
from login dl
left join user du on du.id = dl.user_id
left join client dc on dc.id = dl.client_id
where (dl.user_id,dl.date) in
(select user_id, max(date) as date
from login
group by user_id
)
order by du.name

SELECT语句执行顺序
SELECT语句中子句的执行顺序与SELECT语句中子句的输入顺序是不一样的,所以并不是从SELECT子句开始执行的,而是按照下面的顺序执行:
开始->FROM子句->WHERE子句->GROUP BY子句->聚集函数(sum(),count()…)->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最终结果
每个子句执行后都会产生一个中间结果,供接下来的子句使用,如果不存在某个子句,就跳过

上一篇:深度学习-NLP-自动摘要、图像描述


下一篇:Python3 sorted() 函数