初步看改语句,非常简单,根据products_viewed(产品被查看次数)倒序排序,再根据products_name(产品名字)排序!在products_vie

某前台sql语句,简化后如下

SELECT products_name,products_viewed FROM `products_description`

ORDER BY products_viewed DESC,products_name LIMIT 0,20;

该语句经常大批量出现在慢日志中!

初步看改语句,非常简单,根据products_viewed(产品被查看次数)倒序排序,再根据products_name(产品名字)排序!在products_viewed和products_name上分别建立有索引!

但是感觉products_name排序怪怪的!

explain后发现

+----+-------------+----------------------+------+---------------+------+---------+------+-------+----------------+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+----+-------------+----------------------+------+---------------+------+---------+------+-------+----------------+

| 1 | SIMPLE | products_description | ALL | NULL | NULL | NULL | NULL | 764370 | Using filesort |

+----+-------------+----------------------+------+---------------+------+---------+------+-------+----------------+

改语句做竟然全表扫描!

mysql的order by语句,,如果在where条件中没有合适的索引选择时,将会选择order by col中的索引作为条件,但是如果是多个order by组合,将会导致放弃使用索引!

和开发以及需求沟通,发现通过名字排序是可以不需要的!

我们去掉order by后面的 products_name!

再次explain后发现已经能够使用索引:

explain SELECT products_name,products_viewed FROM `products_description`

ORDER BY products_viewed LIMIT 0,20;

+----+-------------+----------------------+-------+---------------+-----------------+---------+------+------+-------+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+----+-------------+----------------------+-------+---------------+-----------------+---------+------+------+-------+

| 1 | SIMPLE | products_description | index | NULL | products_viewed | 5 | NULL | 20 | |

+----+-------------+----------------------+-------+---------------+-----------------+---------+------+------+-------+

再次对比两次profiling(过程省略),发现第一次损坏大量io和cpu时间Sorting result上!因为该语句为前台语句,有大量查询,优化后,页面打开速度明显提升!

注意:

1. order by m,n 不要轻易写这种语句,一般的order by前面的m才是order by的重点,后面的n为配角,如果没有必要,尽量去掉

2. 参考我的另一篇

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php 一个电子商城的产品分类字段_你会对这个字段做索引嘛,order by多个字段对索引的影响...相关推荐

  1. 商品分类js html,json数据来制作商城的产品分类菜单

    人们早就习惯了在互联网购物买东西,甚至有一部分朋友还是上瘾了.本篇PHP教程就来帮助您的电子商务项目实现最重要的产品类别的导航菜单系统.我已经使用PHP.MYSQL及JQuery实现了亚马逊样式的产品 ...

  2. c# 分类 机器学习_听说你要用C#做机器学习

    修改Program.cs内容 using Microsoft.ML; using Microsoft.ML.Data; using Microsoft.ML.Legacy; using Microso ...

  3. java json 修改字段_我们如何使用Java中的Jackson来更改JSON中的字段名称?

    杰克逊注释@JsonProperty上使用期间的属性或方法的序列或反串行化的JSON.它带有一个可选的' name '参数,当属性名称与JSON中的' key '名称不同时,该参数很有用.默认情况下, ...

  4. Servlet电子商城项目(入门级一)

    一个电子商城分析(疯购) 数据库:crazybuy; 1 商品类别 crazybuy_ product_ category 2 商品 crazybuy_ product 3 用户 crazybuy_ ...

  5. MYSQL第十四次作业---电子商城数据库搭建

    安装并配置MySQL 1.打开控制台 Win+r键 2.登录MYSQL 数据库.表的基本操作 创建电子商城数据库"mall_姓名全拼" create database mall_t ...

  6. 电子商城后台系统(五):商品模块规划

    万事开头难,要编写一套系统,首先是规划.一个系统做得好不好,很大程度上取决于开始的规划好不好.设计好不好.一个电子商城的后台管理系统,首先要做的应该是帐号管理模块和权限模块.但是,我原先开始写的时候, ...

  7. javaWeb-百斯特电子商城-在jsp页面中侧边栏点击,右边进行变化(java实现)(持续完善)

    (javaWeb-百斯特电子商城-在jsp页面中侧边栏点击,右边进行变化(java实现)(持续完善) 1.问题描述: 2.开发环境:+解决思想+建议+注意 3.问题解决 3.1项目结构 3.资源下载( ...

  8. 电子商城数据库设计思路

    一.设计目标 本次设计为设计一个电子商城,即我们经常在淘宝,京东等网站看到的网店.这只是一个初步的设计,跟实际上的网店还有很多的差距.主要的差距在于数据的并发处理,图片服务器,视频服务器,以及用户访问 ...

  9. 1.电子商城后台管理平台项目概况

    一.项目介绍 随着信息化的发展,电商也随着互联网的发展日益状态.为了整理之前所学,这里将做一个电子商城后台管理系统. 二.项目需求 电子商城后台管理平台包含账号管理(保存用户信息).用户登录.退出登录 ...

最新文章

  1. 【tmos】SpringBoot登录拦截
  2. centos 7 包管理工具 snap 安装部署
  3. java中如何生成随机数?
  4. 一个简单的 SQLite 的示例
  5. 将web项目部署到阿里云服务器上
  6. Alpha版本发布说明
  7. PHP Sessions
  8. 啊哈算法——Java实现
  9. 【设计师配色宝典!教你从零开始学配色】转
  10. shopify的前端开发教程
  11. 为什么标签天线振子长度小于半个波长?
  12. 用python实现计算器功能_Python实现的计算器功能示例
  13. AD中如何进行logo的自制与导入
  14. 8086微处理器的寄存器
  15. JavaScript的RSA加密库(cryptico、Node-rsa、Crypto、jsrsasign、JSEncrypt)
  16. 年薪30W+的IC验证工程师究竟是做什么的?一文为你讲解清楚
  17. jarsigner签名APK完整步骤
  18. IDEA中springboot项目@SpringBootApplication飘红问题的奇葩解决方案
  19. 计算机专业用什么轴的键盘,平常爱打游戏,机械键盘应该买什么轴?
  20. 小冰创作诗歌机制详解

热门文章

  1. hive 把mysql语句执行_Hive SQL 语句的执行顺序
  2. vue 数组添加元素_Vue躬行记(3)——样式和表单
  3. css3实现翻转效果,css3 实现3D翻转效果
  4. 【caffe-windows】 caffe-master 之 卷积核可视化(利用matlab)
  5. 设计模式——函数的写作使用外卖模式
  6. MATLAB————用reshape()函数将矩阵转换为张量
  7. Jupyter Notebook——如何快速地以当前文件夹目录打开 Jupyter Notebook
  8. Python tkinter的text控件加滚动条
  9. opencv3.4.5安装包
  10. 深度学习之激活函数篇(Sigmoid、tanh、ReLU、PReLU)