php - 多数据时 select count(*) 查询优化建索引的问题
问 题 InnoDB 的表类型,select count(*) where 条件后面 带12个查询值,不加索引 查50万条数据大概5秒, 想请问这种情况我是不是建索引列是最好的解决办法,顺便请问 一个索引列 和一个索引 的消耗相等吗,比如影响增删改的效率,空间大小等。 谢谢 解决方案 50万5秒太慢了。。需要根据你的查询条件建联合索引 你把查询语句也贴一下吧
164 2022-07-19
编程技术问答社区
php - 三张表,联表查询,这个sql还能再优化吗
问 题 SELECT c.username,c.sex,c.attentions,c.fans,a.id,a.content,a.isnum,a.times,a.turm,a.keep,a.comments,a.uid,b.mini,b.mednum,b.maxs FROM (wb_userinfo c LEFT JOIN wb_weibo a ON c.uid = a.uid) LEFT JOIN wb_picture b ON a.id = b.wid WHERE a.uid IN(SELECT follow FROM wb_follow WHERE fans = 27) OR a.uid = 27 ORDER BY a.times LIMIT 0,10; 解决方案 有用or的可以考虑换成用union来尝试下 (SELECT c.username,c.sex,c.attentions,c.fans,a.id,a.content,a.isnum,a.time
238 2022-07-19
编程技术问答社区
mysql优化 - mysql如何有效的查询所有下级用户?
问 题 两个字段: user_id,parent_user_id 每个用户只能有一个 parent_user_id(上级),一个上级可以有多个下级。 那么如何通过user_id查找这个用户的所有的下级用户? 例如: user_id parenrt_user_id ---------- ---------- 1 null 2 null 3 1 4 1 5 1 6 4 7 6 当user_id 为1的时候,如何一次把 3,4,5,6,7都查询出来? 解决方案 搜索关键字 mysql 树查询
286 2022-07-19
编程技术问答社区
php - sql 优化的问题
问 题 这个sql 还要怎么优化? SELECT COUNT(*) AS tp_count FROM `course` WHERE `project_id` = 1 AND `project_id` NOT IN ('15','20','21','22','23','24','25','26','27','28','30','31','32','36','38','39','40') AND `isissue` = 1 AND `isapp` = 0 AND `isdel` = 0 AND `subject_id` NOT IN ('10','19','20','21','22','23','24','25','28','29','30','31','32','33','34','35','41','42','47','48','49','50','51','52','53','54','55','56','57','58','60','62','
198 2022-07-19
编程技术问答社区
mysql - php随机生成200万条记录中有很多重复的
问 题 我在mysql优化的时候,随便建立了一张临时表,生成200W条数据,但是不明白,生成的记录中有重复的,而且还比较多,不解 在此谢谢诸位了 $conn=new mysqli("localhost","root","","test"); $conn->query("set names utf8"); function str_rand($num){ $str="abcdefghijkmnpqrstuvwxyz0123456789"; $return_str=""; for($i=0;$i
208 2022-07-19
编程技术问答社区
mysql优化 - 数据库设计原则中字段的位置对数据库性能有影响吗
问 题 例如:table_test包含cus_id(客户id),bill_id(单据记录)2个字段 分别对应客户表和单据记录表的主键,客户表是小表,bill表是大表。 想问的是 1、设计的时候cus_id,bill_id在表中第一和第二的位置摆放对性能有区别吗? 2、select cus_id,bill_id from table_test 和select bill_id,cus_id from table_test 这2句性能上会有区别吗? 3、select cus_id,bill_id from table_test,cus,bill where table_test.cus_id = cus.cus_id and table_test.bill_id = bill.bill_id 这句的where条件的摆放问题对性能造成的影响。 谢谢高玩啦! 解决方案 摆放位置无任何影响,但是where的字段有无索引还是有影响的,按照惯例,顺序一般如下:
202 2022-07-19
编程技术问答社区
mysql优化 - mysql 分页查询优化。
问 题 table 表中30万记录 id,自增主键, node,create_at 都有索引 但是没有联合索引 下面的语句查一次要8s左右, 可以预估随着数据的继续增加,速度会越来越慢。 最近在学习 mysql 查询优化 也看了很多文章,教程(但是没有系统的看mysql手册,不好意思) 请各位朋友指导下,如何优化,如果可以 请大概讲述下,怎么分析的,为什么使用xxxx方式优化就会有效。 谢谢各位。 EXPLAIN SELECT `id` FROM `table` WHERE `node` = 2 ORDER BY `create_at` DESC LIMIT 12 OFFSET 69996 ------------------------------------------------------------------------ id: 1 select_type: SIMPLE
294 2022-07-19
编程技术问答社区
java - mysql语句把满足某一条件的结果放到查询结果的最后面怎么弄
问 题 订单列表 订单列表中有没有设置服务时间的,有已经设置过服务时间的,现在需要查询订单,按订单的服务时间升序排列,但是要把没有设置服务时间(默认为1970年)放到最后面,用一个sql语句怎么解决呢? 解决方案 MySQL: select * from t order by IF(ISNULL(order_col),1,0), order_col asc; Oracle select * from t order by order_col asc nulls last;
320 2022-07-19
编程技术问答社区
mysql - using filesort的优化
问 题 SELECT * FROM table WHERE (col_1 = 1 AND col_2 = 2 ) OR (col_1 = 2 AND col_2 = 1 ) AND col_3 = 3 ORDER BY sort DESC 这样的查询在explain的时候会出现using filesort,有没有优化的办法 解决方案 这里有一个解决途径:http://blog.csdn.net/imzoer/a...'
164 2022-07-19
编程技术问答社区
mysql优化 - mysql如何优化这条更新语句?
问 题 UPDATE yw_tmp_usr a SET a.hth=(SELECT b.hth FROM yhdang b WHERE a.business_key=b.dh ) WHERE EXISTS (SELECT b.hth FROM yhdang b WHERE a.business_key=b.dh ); 上面这条语句在Oracle中执行效率比mysql中高得多,在mysql中却总是没反应,甚至报错:1205。我修改了linux上的my.cnf文件,让innodb_lock_wait_timeout = 1200,但仍无结果,请问各位大神,8.5万的数据,这样更新大概需要多长时间,如何优化呢?? 解决方案 UPDATE yw_tmp_usr a, yhdang b SET a.hth = b.hth WHERE a.business_key=b.dh
180 2022-07-19
编程技术问答社区
mysql优化 - mysql update和delete和insert 操作多条数据的背后情况
问 题 1.update和delete和insert 操作多条数据,都是一条一条的添加,修改和删除,请问对不对? 2.有没有什么方法证明? 这个问题已被关闭,原因:问题已解决 - 问题已解决,且对他人无借鉴意义 解决方案 mysql中update,delete,insert操作多条记录时都是单条逐行执行,这才是我想要问的问题,我自己已经证实了。
388 2022-07-19
编程技术问答社区
php - 求帮忙设计个多字段的数据表
问 题 我有一些数据,共十几个字段,每个字段都可能成为搜索的关键字。 我每次请求几乎都要把所有字段都读出来做展示。 请大神指教: 是否有必要把每个字段独立出来做成单独表,查询的时候做join? 还是说写到一张表里就可以了? 解决方案 每个字段搞一张映射表那还不得累shi,查询的时候也不好查,关联n张表,修改删除的时候也不方便,然后增加了一个字段,就需要增加一张表,并且所有的查询都要增加。既然需求是这些字段都有可能检索,还是放在一张表里面吧,建立合适的索引。表有十几个字段很常见的,还有更多的。。
222 2022-07-19
编程技术问答社区
mysql优化 - MySQL-SQl语句优化步骤
问 题 RT,在遇到一个运行很慢SQL的情况下,如何进行分析、优化、测试? 简单说明一下步骤思路; 解决方案 如果不知道是哪个sql慢,就开启mysql的慢查询日志。 对记录的日志文件用mysql安装目录下的bin目录下的 mysqldumpslow查看。 具体命令是 mysqldumpslow -s c -t 10 /path/to/slow.log。 可以提取出top10慢的sql语句模式。 这样就找到了哪些语句慢。 找到之后分析的最简单手段是explain查看执行计划。 例如 explain select * from t where xxx order by xxx。 查看explain的结果,可以看出索引使用情况,排序方式等。具体的结果查看mysql官方文档中explain命令的解释最好了。 优化的最主要手段是确保索引建立正确。 如果索引方面没什么可优化的空间,那么多半是表结构设计不合理,或者查询方式组合不合理。 这个就要结合具体的业务去
248 2022-07-19
编程技术问答社区
java - mysql中key和index的区别
问 题 关于mysql数据库索引 key 是数据库的物理结构,处于模型层面的,它包含两层意义和作用,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括primary key, unique key, foreign key 等。 index是数据库的物理结构,处于实现层面的,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。 索引只是索引,它不会去约束索引的字段的行为(那是key要做的事情)。 Mysql常见索引有:主键索引、唯一索引、普通索引、全文索引、组合索引。 这个怎么理解啊?key和index的区别,能不能解释的实在一些,看了一些资料,还是不太明白。 解决方案 嗯这确实是比较容易混淆的地方。 在我们使用MySQL中可能压根不会注意这个问题,因为大多数情况下他们展示出来的效果都差不多,但是还是不能将他们划等号(至少理论上是这样) 索引(index)和约束(key
190 2022-07-19
编程技术问答社区
mysql - 循环中逐个查询数据库和联表一次性查询数据库分别适用于哪种场景?
问 题 一般来说循环中逐条查询的效率是比较低的,每次都产生连接以及并发的开销。 是否有些场景是适合在循环中逐个去查询,而不适合一次性查表的场景呢? 解决方案 不要在循环中去查询, 看不到任何在适合在循环中查询的理由! 如果你是一个离线任务, 不用像web请求那样即时返回, 并且数据量也比较大, 那合理的做法也是你对查询做一定的切割, 每次获取几十到几百的数据(过多的数据也会导致传输缓慢) 最后, 即使迫不得已真的要在循环中去查询了, 你也应该使用同一个连接, 而不是每次都重新建立连接!
254 2022-07-19
编程技术问答社区
php - 分表之后,按照时间排序获得数据有没有好的方式
问 题 有三张表: 用户表:user-------------------user_id 文章表:article----------------article_id,user_id; 评论表:article_comment----comment_id,article_id user表对article_comment表是一对多对多的关系。 现在对article_comment进行分表,按照article_id%6分为article_comment_0/1/2/3/4/5六张表, 现在需要根据评论的时间来展示某一个用户的所有文章的评论,sql该怎么写呢? 解决方案 经过2天的讨论,我们决定分表结构不变,article_comment(评论)表按照article_id取余进行分表,后台评论管理的时候,按照时间进行分页,(最近一天,最近两天,最近五天。。。参考微信公众平台的评论管理),将时间作为限制条件查询所有评论表: sql:SELECT
156 2022-07-19
编程技术问答社区
mysql优化 - mysql修改字段类型问题
问 题 各位老哥,小弟请教个问题,我有张mysql数据表,里边大概6W条记录,现在有个varchar类型字段改成int类型,该字段有建立索引的,我是不是应该先删除索引再改字段类型?或者有更好的方法? 解决方案 首先,数据结构尽可能不要改动 其次,如果非动不可,请先备份好数据,预防不测 最后,“字段是不是应该先删除索引再改字段类型”恐怕要看是什么样的索引吧。。。 最直接的办法应该是新建一张表,然后再导入数据 补充一句:其实,哪有什么更好的办法,尝试就对了!
334 2022-07-19
编程技术问答社区
mysql - php 計算數據庫查詢時間及完成時間?
问 题 請問如何用php印出數據庫查詢時間以及完成時間呢? 就是當php去數據庫SELECT數據時 找到所有筆數後完成的時間 以及將數據全數印出顯示完成的時間 解决方案 执行前存一个time,执行完再存一个time,就可以了。
204 2022-07-19
编程技术问答社区
mysql优化 - mysql 多表联合查询,求一个效率最高的查询
问 题 A 表 uid,oid (oid取值于uid,uid主键) B 表 uid,type (uid取值于A表uid) C 表 type,money (type主键) 求A表oid为11的uid在B表中的type对应C表中money的总和. 求效率最高的查询方式,谢谢! 解决方案 SELECT money FROM C LEFT JOIN B ON C.type=B.type LEFT JOIN A ON A.uid=B.uid WHERE A.oid=11
212 2022-07-19
编程技术问答社区
php - 如何每天自动优化mysql指定表
问 题 现在用的程序是php+mysql,linux服务器,有没有什么办法可以每天在固定时间进行一次mysql表的优化, 需要自动优化的原有主要是因为搜索的用户太多了,造成搜索缓存太多,占用空间 解决方案 要想定时的花,mysql有自带的定时事件EVENT; 例子:每天凌晨0点定时执行存储过程p_optimize_table CREATE EVENT `optimize_table_event` ON SCHEDULE EVERY 1 DAY STARTS '2017-03-06 00:00:00' ON COMPLETION NOT PRESERVE ENABLE COMMENT '自动优化表' DO CALL p_optimize_table() 这只是一个定时事件,通过调用存储过程p_optimize_table,你要做的优化表工作就在这个存储过程里做。 话说, 因为搜索太多,缓存太多,所以优化表?OPTIMIZE TABLE? 好奇你要怎
168 2022-07-19
编程技术问答社区