在MYSQL查询中使用WHERE和ORDER BY条件时结果非常慢

问题描述 投票:0回答:3

我面临的问题非常缓慢。

我正在分享表结构和结果。

如果您有任何建议,请尽快更新。

================================================== ===============表结构 - https://www.phpmyadmin.net/ - - 主机:localhost:3306 - 生成时间:2019年3月25日上午11:48 - 服务器版本:5.5。 61-cll - PHP版本:7.2.7

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";

--
-- Database: `energe3c_lms`
--

-- --------------------------------------------------------

--
-- Table structure for table `user_material`
--

CREATE TABLE `user_material` (
  `id` int(11) NOT NULL,
  `user_course_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `material_id` int(11) NOT NULL,
  `attempt` int(11) NOT NULL,
  `another_attempt` tinyint(1) DEFAULT '0',
  `status` varchar(255) DEFAULT NULL,
  `complete` tinyint(1) DEFAULT NULL,
  `percent` float DEFAULT '0',
  `time` varchar(255) DEFAULT NULL,
  `marking_time` varchar(255) DEFAULT NULL,
  `marked_by` int(11) DEFAULT NULL,
  `feedback` text,
  `submitted_date` datetime DEFAULT NULL,
  `marking_date` datetime DEFAULT NULL,
  `created` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `user_material`
--
ALTER TABLE `user_material`
  ADD PRIMARY KEY (`id`),
  ADD KEY `user_material-user` (`user_id`),
  ADD KEY `user_material-material` (`material_id`),
  ADD KEY `user_material-marking-user` (`marked_by`),
  ADD KEY `user_course-user_material` (`user_course_id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `user_material`
--
ALTER TABLE `user_material`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `user_material`
--
ALTER TABLE `user_material`
  ADD CONSTRAINT `user_course-user_material` FOREIGN KEY     (`user_course_id`) REFERENCES `user_course` (`id`) ON DELETE CASCADE ON     UPDATE CASCADE,
  ADD CONSTRAINT `user_material-marking-user` FOREIGN KEY (`marked_by`) REFERENCES `user` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
  ADD CONSTRAINT `user_material-material` FOREIGN KEY (`material_id`) REFERENCES `material` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `user_material-user` FOREIGN KEY (`user_id`)     REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

COMMIT;

显示行0 - 24(总计25586268,查询耗时0.0007秒。)

SELECT * FROM user_material

=================================================================

显示0到24行(共77行,查询占用22.9434秒。)

SELECT * FROM user_material where status ='submitted'

=================================================================

显示行0 - 24(总计34026300,查询占用24.4978秒。)[submitted_date:... - ...]

SELECT * FROM user_material ORDER BY submitted_date ASC

=================================================================

如果您有任何建议,请更新我。

我在yii2框架中使用此查询

mysql sql performance sql-order-by where
3个回答
© www.soinside.com 2019 - 2024. All rights reserved.