社区
MySQL
帖子详情
请教多表查询中的索引及效率问题!
datoushu
2011-03-19 06:48:05
表A:
a_id(int), b_id(int), category(int), status(int)
表B:
b_id(int), rate(int)
表A数据量几十万,表B数据量几百,现在要求两表联合查询 A.category = [一个整数] A.status = [一个整数] 然后 ORDER BY B.rate DESC 最后要求提取前N个结果,要求能尽可能快的返回结果,请问这样的多表联合查询的索引该如何建?同时SQL语句要怎么写呢?
谢谢了!
...全文
166
5
打赏
收藏
请教多表查询中的索引及效率问题!
表A: a_id(int), b_id(int), category(int), status(int) 表B: b_id(int), rate(int) 表A数据量几十万,表B数据量几百,现在要求两表联合查询 A.category = [一个整数] A.status = [一个整数] 然后 ORDER BY B.rate DESC 最后要求提取前N个结果,要求能尽可能快的返回结果,请问这样的多表联合查询的索引该如何建?同时SQL语句要怎么写呢? 谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
datoushu
2011-03-20
打赏
举报
回复
谢谢大家的指点,建两个表也是无奈之举,因为还有很多字段我没写出来,如果只建一个表会出现很多的冗余字段,现在我的方案是维护两个rate,定期更新,这样虽然麻烦一些,但是不影响正常应用。
rucypli
2011-03-19
打赏
举报
回复
本身两个表就没有拆开的必要
ACMAIN_CHM
2011-03-19
打赏
举报
回复
是的,如果查询速度很重要的话,则需要在表中添加必要的冗余字段。
datoushu
2011-03-19
打赏
举报
回复
谢谢楼上的回复,这样查询还是比较慢,30多万的A表数据需要花费1秒多。难道真的要维护2个rate,在A表中再建立一个rate,然后定期更新A表的rate吗,这是我想的办法,虽然麻烦,但速度上会快很多?
ACMAIN_CHM
2011-03-19
打赏
举报
回复
select *
from a inner join b on a.b_id=b.b_id
where a.category=123
and a.status=456
order by b.rate
limit 100
create index xxx on a(category,status)
create index xxx2 on a(b_id)
thinkphp mysql count_ThinkPHP5查询当前表引擎,以及InnoDB表引擎下count(*)查询
效率
低的
问题
...
今天新开发的功能上线之后出现了查询
效率
极其低下的
问题
,查询日志后发现
问题
出在代码内的大量的count()查询上,最严重时一条简单的count()查询执行时间长达120多秒!针对这个
问题
请教
前辈后被告知原因:InnoDB引擎下的count()语句会在实时查询表
中
的所有数据后返回总数所以
效率
较低,而MyISAM引擎则是直接返回表内存储的行记录信息所以
效率
较高。因为我本地的数据库引擎为MyISAM而线上...
mysql
索引
1.使用
索引
的原则/建议 资料来源于网络: 一般选择在这样的列上创建
索引
在经常需要搜索查询的列上创建
索引
,可以加快搜索的速度; 在作为主键的列上创建
索引
,强制该列的唯一性和组织表
中
数据的排列结构; 在经常用在连接的列上创建
索引
,这些列主要是一些外键,可以加快连接的速度; 在经常需要根据范围进行搜索的列上创建
索引
,因为
索引
已经排序,其指定的范围是连续的; 在经常需要排序的列上创...
索引
的
效率
查询结果占全表的三分之二及以上时,用
索引
的好处并不大。遇到复杂查询的SQL时,最好
请教
DBA,建议在哪一列加
索引
。
高频面试MySQL之
索引
、查询优化
1、简介
索引
和查询优化是面试比不可少的环节,下面针对B+Tree做一些常见的面试点的分析,从建表、
索引
、查询三个方面分析。 2、数据库和表设计 从大的设计原则上,可以考虑分库分表,读写分离,使单表数据不会太大,同时流量分散到不同数据库实例上,减轻数据库压力 字段数据类型选择:1)选择占用空间较小的数据类型,使用定长代替变长,如使用unsigned tinyint、smallint代替int;2)对于布尔、枚举类型的字段,使用char(1) 来代替;3)分离text、blob等类型的字段;4)避免单表字段
(十四)Mysql 单表 VS 联表(全文很长,你要认真点)
·前言 之前在学校学习理论知识的时候,总是错误的认为当涉及到多张表,且有冗余数据的时候,就使用联表操作。但是直到自己深一步学习后,才发现事实并不是如此。 首先可以拿阿里巴巴的代码规范来证明我那错误观点:其有一条强制性建议:执行三张表以上的多表联合查询,因为对数据量不大的应用来说, 多表联合查询开发高效, 但是多表联合查询在表数据量大, 并且没有
索引
的时候, 如果进行笛卡儿积, 那数据量会非常大, sql 执行
效率
会非常低。 ·联表缺点 联表操作即是通过sql代替业务代码进行业务逻辑操作,虽说执行sql
MySQL
56,678
社区成员
56,708
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章