【mysql – 在三个不同的列上使用MAX,WHERE和GROUP BY提高SQL查询的速度】教程文章相关的互联网学习教程文章

mysql-简单查询优化(WHERE ORDER LIMIT)【代码】

我有这个查询,运行速度令人难以置信(4分钟):SELECT * FROM `ad` WHERE `ad`.`user_id` = USER_ID ORDER BY `ad`.`id` desc LIMIT 20;广告表大约有1000万行.SELECT COUNT(*) FROM `ad` WHERE `ad`.`user_id` = USER_ID;返回1万行. 表具有以下索引:PRIMARY KEY (`id`),KEY `idx_user_id` (`user_id`,`status`,`sorttime`),解释给出了这一点:id: 1select_type: SIMPLEtable: adtype: index possible_keys: idx_user_idkey: PRIMARY...

来自查询的结果作为MySQL中WHERE语句的参数【代码】

我有两个表:orders和orderProducts.它们都有一个名为“ order_id”的列. 订单具有名为“ date_created”的列ordersProducts有一个名为“ SKU”的列 我想在日期范围内选择SKU. 到目前为止,我的查询是:SELECT `SKU` FROM `orderProducts` INNER JOIN orders ON orderproducts.order_id = orders.order_id WHERE orders.order_id in (SELECT id FROM orders WHERE date_created BETWEEN '2014-10-01' AND '2015-03-31' ORDER BY dat...

mysql-使用字符串替换进行更新时是否应添加WHERE子句【代码】

我想在整个列上执行字符串替换,将一个短语的所有实例更改为另一个:UPDATE `some_records` SET `some_column` = REPLACE(`some_column`, 'foo', 'bar');由于许多行不包含字符串“ foo”,因此它们不受此查询的影响,这很好.我只关心包含它的行.我的问题是,是否有任何理由添加WHERE子句以显式定位将受影响的行?例如UPDATE `some_records` SET `some_column` = REPLACE(`some_column`, 'foo', 'bar') WHERE `some_column` LIKE '%foo%...

MySQL 5.6 long WHERE IN查询非常慢【代码】

从MySQL的5.6版本开始,一个很简单的查询尽管比5.4更长的查询时间要长一些. 模式:三个表,一个包含元素,一个包含类别,以及介于它们之间的M:N表.创建语句:CREATE TABLE element (id int(11) NOT NULL AUTO_INCREMENT,name varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=4257455 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;CREATE TABLE category (id int(11) N...

使用where子句删除MySQL行【代码】

我正在尝试根据某些文件删除重复的行.当我运行下面的查询时:deletefrom slowmo_vid as sv1, slowmo_vid as sv2where sv1.video_id = '2luh6g3ni5ex'and sv1.slowmo_end_t<=sv2.slowmo_end_t;我收到错误消息:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as sv1, slowmo_vid as sv2 where sv1.video_id = '2luh6g3ni5ex' and sv1.s...

mysql-根据where子句中匹配列的优先级从db选择数据【代码】

嗨,我面临一个问题,我有一种情况,我需要根据where子句中匹配列的优先级从db选择数据 例如我有桌子Employee: FirstName, LastName, City, State.我想根据条件搜索员工的记录.但是情况是,首先我需要获取所有四个条件(列)都匹配的记录,然后是所有四个条件(列)中的三个匹配的记录,然后是四个条件(列)中的两个的所有记录.匹配等等 为此,我根据情况创建动态查询,但是如果搜索条件的扩展范围更大,而不是我需要在查询中放置许多条件,则将难...

在WHERE添加额外条件后的MySQL Update语句【代码】

我有此MySQL更新声明.它工作正常.UPDATE Table1 SET Table1_field1='field1_content', Table1_field2='field2_content' where Table1_field3=2 上面的所有字段都属于同一表.然后,我在WHERE子句中添加了一个附加条件AND Table2.fieldname =’XXX’UPDATE Table1 SET Table1_fieldname1='field1_content', Table1_fieldname2='field2_content' where Table1_fieldname3=2 AND Table2.fieldname='XXX'这次,SQL语句失败.错误是“ where...

mysql-SQL,WHERE子句多个字段中的更新表【代码】

嗨,我想用最小的库存编号及其对应的产品编号更新tblrestocklog. 这是我的示例表:StockNo ProductNo Quantity PurchasedDate ExpirationDate 1017123002 25373 10 2016-10-22 2017-02-10 1017123003 25370 10 2016-10-22 2018-11-21 1017123006 25370 10 2016-10-22 2018-03-30 1017123005 25370 10 2016-10-22 2018-04-22现在,我...

与字符串相比,MySQL在where子句中使用数字更快吗?【代码】

假设您有4种评估类型:测试,测验,MiniQuiz和FinalExam 我们像这样将记录存储在数据库中studentid ----- assesType 1 test 2 quiz 3 quiz 4 quiz 5 miniquiz 6 miniquiz 7 final 8 final它是更快还是更好的为每种类型分配数字的方法,可以这样说: 测试= 1测验= 2小测验= 3最终= 4 并使用它代替记录.stud...

如何优化MySQL查询,以便WHERE子句中的选定值仅计算一次?【代码】

我需要以有效的方式从表中随机选择10行. 我发现以下代码很好用(查询后,我只从查询中获得的10到30中选择了PHP中的10个随机元素):SELECT * FROM product WHERE RAND() <= (SELECT 20 / COUNT(*) FROM product)但是,子查询尽管相对便宜,但还是为表中的每一行计算的.我该如何预防?有变量吗?加入? 谢谢!解决方法:这是一个高度特定于mysql的技巧,但是通过将其包装在另一个子查询中,MySQL将使其成为一个常量表,并且仅对其进行一次计算...

mysql-避免重新计算列列表中已计算的WHERE语句中的值【代码】

我非常希望不必重新计算WHERE语句中已经在列列表中计算出的值. 例如,我必须这样做:SELECT albumId, fnAlbumGetNumberOfPhotos(album.albumId) AS albumPhotoCount FROM album WHERE albumIsActive = 1 AND fnAlbumGetNumberOfPhotos(album.albumId) > 0但是想知道为什么我不能这样做,或者是否有不需要再次调用该函数的其他解决方法:SELECT albumId, fnAlbumGetNumberOfPhotos(album.albumId) AS albumPhotoCount FROM album WHE...

mysql-SQL查询:WHERE子句【代码】

我的表格评分具有以下结构: RATING(INT’id’,INT’stars’)主键’id’; 众所周知,恒星只能具有1到5的值. 以下是我的表格的一些可能内容: 样本表1:ID Stars -- ----- 1 5 2 4 3 4 4 4 5 5 6 4 7 4样本表2:ID Stars -- ----- 1 1 2 2 3 3 4 2 5 1 6 1 7 1 8 2 9 1我正在用以下查询查询表:SELECT stars, count(stars) as count FROM rating GROUP BY stars ORDER BY stars desc;样本表1输出...

mysql-“ WHERE…IN…”,“ WHERE…!=…”查询索引问题【代码】

我正在使用MySQl数据库. 我知道如果我为列创建索引,则使用该列索引可以快速从表中查询数据.但是,我仍然有以下问题: (假设我有一个名为cars的表,有一个名为country的列,并且已经为country列创建了索引) >例如,我知道查询SELECT * FROM cars WHERE country =’japan’将使用列country上的索引来查询快速的数据. !=操作怎么样?将选择*从所在国家的汽车上!=’日本’;还使用索引来查询数据?> WHERE … IN …操作是否使用索引查询数...

php-使用WHERE在MySQL中更新查询【代码】

我正在运行以下UPDATE查询,但没有成功:$sql="UPDATE users SET firstname='".$_GET['fn']."',lastname='".$_GET['ln']."',email='".$_GET['emadd']."' WHERE id = ".$_GET['id'];mysql_error();虽然我确定这是语法问题,但不会返回任何错误. 如果您能通过说明帮助我进行清理以帮助我了解哪里出了问题,将不胜感激! 为了提供更大的参考点,以下是表创建代码:$sql="CREATE TABLE users ( id int NOT NULL auto_increment, PRIMARY KE...

MySQL存储过程:如果在WHERE中【代码】

我正在尝试通过以下方式选择一些数据:SELECT column FROM table WHERE a = a1 AND (b = b1 OR b = b2 OR b = b3);我要它做的是,如果b不等于b1,请检查b = b2.但是,如果b = b1,请勿检查其他条件.该select语句的结果只能是一个条目.但是,在我没有的语句中,它检查所有三个条件,有时返回多行.同样,我希望它停止检查条件是否为真. 关于如何实施的任何想法?我尝试过案例,但没有成功… 先感谢您! 编辑这是我尝试运行的实际查询.INSERT I...