php - 关于如何索引我的数据库的问题

标签 php mysql optimization indexing database-optimization

我需要你的帮助,了解如何在我的表中包含 INDEXES,我已经在几个教程中阅读过它,但仍然无法在我的数据库中实现它。为了提高我的数据库的效率: 我已经在 wampserver 上安装了 php_apc.dll 并且它更快了一点,我也试图避免使用 SELECT * 在我的查询中需要的地方。但是如何实现INDEX是我的问题。如果您能指出 INDEX 的必要位置,我将非常高兴。

这是我的数据库架构

  Database: RESULTS
  -------------------

   Table: STUDENTS
   - studentID (int)
   - first_name (varchar)
   - last_name (varchar)
   - other_name (varchar)

   Table: COURSES
   - courseID (int)
   - course_code (varchar)
   - course_title (varchar)
   - course_unit (int)

   Table: SEMESTER
   - semesterID
   - semester_name

   Table: MAINTABLE
   - scoresID (int)
   - courseID (int)
   - studentID (int)
   - semester_name (varchar)
   - session (varchar) 
   - score (int)
   - grade (varchar)
   - remarks (varchar)

我的大部分查询都围绕着 INSERT INTO MAINTABLE , STUDENTS ..... 然后 SELECT FROM MAINTABLE , STUDENTSCOURSES

感谢您的耐心和时间。我非常感激。 谢谢。

**查询示例"

                   $query2 = mysql_query("SELECT       first_name, last_name
        FROM students 
      WHERE matric_no = '".$matric_no."' ");
    ($row2 = mysql_fetch_array($query2)); 

    $query3 = mysql_query("SELECT  SUM(c.        course_unit) AS 'TOTAL'
               FROM    maintable AS m  
           INNER JOIN students AS s ON
                m.matric_no = s.matric_no
          INNER JOIN courses AS c ON
             m.course_code = c.course_code
       WHERE m.matric_no = '".$matric_no."'
          AND m.level = '".$level."'") or 
 die (mysql_error());

             $query4 = mysql_query("SELECT  c.          course_unit, m.score 
         FROM    maintable AS m  
                 INNER JOIN students AS s ON
                      m.matric_no = s.matric_no
                  INNER JOIN courses AS c ON
           m.course_code = c.course_code
      WHERE m.matric_no = '".$matric_no."'
                      AND m.level = '".$level."'") 
      or die (mysql_error()); 

              $query5 = mysql_query("SELECT  c.         course_unit, m.score 
             FROM    maintable AS m  
         INNER JOIN students AS s ON
             m.matric_no = s.matric_no
                     INNER JOIN courses AS c ON
                 m.course_code = c.course_code
     WHERE m.matric_no = '".$matric_no."'")           or die (mysql_error()); 


    $query6 = mysql_query("SELECT  SUM(c.              course_unit) AS 'TOTAL'
                     FROM    maintable AS m  
                      INNER JOIN students AS s ON
                              m.matric_no = s.matric_no
                      INNER JOIN courses AS c ON
                 m.course_code = c.course_code
      WHERE m.matric_no = '".$matric_no."'")           or die (mysql_error());     



            $query7 = mysql_query("SELECT  m.                            course_code AS 'Course Code',        c.course_title AS 'Course Title'
 , c.course_unit AS 'Unit',
  m.score AS 'Score', m.grade AS 'Grade'
                      FROM    maintable AS m  
                      INNER JOIN students AS s ON
                m.matric_no = s.matric_no
                      INNER JOIN courses AS c ON
                 m.course_code = c.course_code
  WHERE m.matric_no = '".$matric_no."'
  AND m.level = '".$level."'") 
   or die (mysql_error());
               $number_cols = mysql_num_fields         ($query7);

            $query8 = mysql_query("SELECT  m.         score, m.course_code 
                      FROM    maintable AS m  
                      INNER JOIN students AS s ON
                              m.matric_no = s.matric_no
                      INNER JOIN courses AS c ON
                 m.course_code = c.course_code
         WHERE m.matric_no = '".$matric_no."'
      AND m.score >= 0 AND m.score < 40 ")         or die (mysql_error());

                   $query9 = mysql_query("SELECT          m.grade, m.course_code 
                      FROM    maintable AS m  
                      INNER JOIN students AS s ON
                              m.matric_no = s.matric_no
                      INNER JOIN courses AS c ON
               m.course_code = c.course_code
         WHERE m.matric_no = '".$matric_no."'
                      AND m.grade = 'AR'") 
    or die (mysql_error());

请原谅我的排版。我用手机打字。感谢您的时间。

最佳答案

这有点过于笼统,无法在这里很好地回答,但我对您的指导是专注于您的 WHERE 子句 - 如果您在 WHERE 中使用了很多东西,然后在其上放置一个索引,这将使这些查询更快。此外,如果您进行任何连接,请将索引放在您在 ON 子句中使用的内容上。这太过于笼统了,我希望我会因为这样说而遭到抨击,但一般性问题会产生一般性答案。

更具体的是您显示表结构并实际显示一两个查询。但随后它就非常接近我们为您完成您的工作。

希望这对您有所帮助。

关于php - 关于如何索引我的数据库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9948273/

相关文章:

java - 如何优化这个for循环的计算速度?

php - 从一种表单插入多个表(mysql 和 PHP)

mysql - 连接到 MYSQL 数据库,检索 JSON 数据并通过 AJAX 将其发送到客户端

java - 优化具有多个循环的方法

javascript - 用于获取和设置同一输入元素的 jQuery 单行代码优化

mysql - 如何使用 liquibase 创建分区表

PHP 魔术方法 __set 和 __get

php - .htaccess 改变自身 - 导致 500 内部服务器错误

php - 单击按钮创建 mysql 事件,每 5 分钟删除表的第一行?

mysql - 当值的数量未知时,将多个值插入单个字段的替代方法