通过SQL 查询分析器,显示比较:我的结论是: 分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句 分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句 分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用 SELECT u.username FROM `user` u join contact_info c on (u.id=c.user_id) and c.address='123';
下面两个函数的使用和FIND_IN_SET一样,使用时只需要把FIND_IN_SET换成FIND_PART_IN_SET或FIND_ALL_PART_IN_SET
例如某字段里是为1,2,3,4,5
使用方法:
第一种,传入1,3,6 可以查出来
select * from XXX where FIND_PART_IN_SET('1,3,6','1,2,3,4,5')
第二种,传入1,3,6 查不出来
select * from XXX where FIND_ALL_PART_IN_S
概述
UNION
连接数据集关键字,可以将两个查询结果集拼接为一个,会过滤掉相同的记录
UNION ALL
连接数据集关键字,可以将两个查询结果集拼接为一个,不会过滤掉相同的记录
今天在接到一个需求的时候使用了UNION进行查询后发现,如果两个查询分别使用ORDER BY后拼接居然无法成功排序,经过了好一番折腾,记录下
表结构及数据
-- 创建表
CREATE TABLE test_user (
ID int(11) NOT NULL AUTO_INCREMENT,
USER_ID i
数据库作为后台开发的重要部分,开发后台必然无法避免地要去做一些MySQL语句优化或者纠错,这里有几条简单的纠错技巧可以参考。
1 在使用编程语言提供的接口如jdbc进行sql查询时,难以避免地会出现语句拼接错误的情况,如果在编译时报错,可以将执行的语句打印出来,仔细检查
1.1 如果仔细检查还发现不了错误,可以在mysql命令行中纠错,输入如下命令
set global general_log='on'
set global log_output='table'
运