java me-关于mysql优化连表查询的问题

问题描述

关于mysql优化连表查询的问题

mysql中查询两张表中的数据,一张表的数据量大,一张数据量小,有一个id关联,但是这个id在两张表都不是主键,怎么
查才能速度快呢?sql大概在下面,数据a表10w条,b表几十条
select * from a a ,b b
where
a.c_id = b.c_id ORDER BY a.cid limit 1,20 大概要0.8秒,如果去掉排序只要3ms,试过用inner join ,但是有条件的情况下也很慢

解决方案

1、加索引
2、避免用select * ,如果可以,就指定具体的使用字段,以便于用到索引

解决方案二:

select * from a where a.c_id in (select c_id from b) order by c_id limit 1,20

同时对a表的c_id加索引,如果b的c_id数据量不大,应该是不需要的索引

解决方案三:

select * from a where a.c_id in (select c_id from b) order by c_id limit 1,20

同时对a表的c_id加索引,如果b的c_id数据量不大,应该是不需要的索引

时间: 2025-01-12 13:57:50

java me-关于mysql优化连表查询的问题的相关文章

数据库-关于原生mysql语句多表查询更新字段问题 求大神解答

问题描述 关于原生mysql语句多表查询更新字段问题 求大神解答 如题:a表user_id school_id1233 220132346 220172344 234452247 22017... ... b表user_id term2346 12346 12346 22247 21233 1... ... 如上两张表:根据a表中的school_id=22017 得到它的user_id 然后根据此user_id得到b表中的term 并把term=1的变为term=2,把term=2的变为term

mysql SQL 多表查询最优问题

问题描述 mysql SQL 多表查询最优问题 有表 t(t_year,col), t1(t1_year,t1_month,col_1), t2(t2_year,t2_month,col_t2), t3(t3_year,t3_month,col_t3), 和目标表 T(T_year,T_month,col,col_1,col_2,col_3), 将t, t1, t2, t3的数据整合到 T 中,什么样的SQL最优? 解决方案 多个表join,然后设置on的条件判断年,月,日相等条件. 解决方案二

MySQL的多表查询(笛卡尔积原理)

原文:MySQL的多表查询(笛卡尔积原理) 先确定数据要用到哪些表. 将多个表先通过笛卡尔积变成一个表. 然后去除不符合逻辑的数据(根据两个表的关系去掉). 最后当做是一个虚拟表一样来加上条件即可.   注意:列名最好使用表别名来区别.     笛卡尔积         Demo:   左,右连接,内,外连接 l             内连接: 要点:返回的是所有匹配的记录. 2.         select * from a,b where a.x = b.x               

MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)_Mysql

殊不知,在N年前被奉为"圣经"的数据库设计3范式早就已经不完全适用了.这里我整理了一些比较常见的数据库表结构设计方面的优化技巧,希望对大家有用.     由于MySQL数据库是基于行(Row)存储的数据库,而数据库操作 IO 的时候是以 page(block)的方式,也就是说,如果我们每条记录所占用的空间量减小,就会使每个page中可存放的数据行数增大,那么每次 IO 可访问的行数也就增多了.反过来说,处理相同行数的数据,需要访问的 page 就会减少,也就是 IO 操作次数降低,直接

30种mysql优化sql语句查询的方法

  1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id fro

MySQL左联多表查询where条件写法示例_Mysql

复制代码 代码如下: select * from _test a left join _test b on a.id=b.id where a.level='20' and a.month='04' and b.level='20' and b.month='03'; select a.*,b.* from (select * from _test where level='20' and month='04') as a left join (select * from _test where

MySql实现跨表查询的方法详解_Mysql

复制代码 代码如下: SELECT c.id, c.order_id, c.title, c.content, c.create_time, o.last_pic FROM `orders` o , `case` c WHERE c.order_id = o.order_id ORDER BY c.id DESC LIMIT 15; 关于跨表提取字段的方法!利用order_id相同字段,提取case中的id,order_id,title,content,create_time:orders表中的

java-Java怎么把从一张表查询到的字段插入到另外一张表

问题描述 Java怎么把从一张表查询到的字段插入到另外一张表 public void addObjectFields(Company c)throws SQLException{ Connection conn=DBUtil.getConnection(); String sql="" insert into cdpt_object_fields""+( object_idobject_nameobject_typefield_idfield_auto_idfiel

mysql-MySQL中多表查询语句并显示结果到jsp上

问题描述 MySQL中多表查询语句并显示结果到jsp上 我的Java连接了数据库(MySQL的),现在库里十张表,除了表名不一样外,表里内容都一致.现在我想通过后台来根据表名查询每张表,然后把每张表里的内容显示到前台的jsp页面上,请问查询语句应该怎么写? 解决方案 可以用sql的 union 语句连接几个表,组织到一个集合里显示