php - 将 MySQL 查询存储在文件中

标签 php mysql

我开发了一种方法,可以从文件中读取复杂或冗长的查询,而不是直接在代码中读取,以避免困惑并提供对查询本身的快速引用。然后我被告知这不是首选,因为脚本必须从文件中读取,因此速度较慢。这是我的例子:

文件:sql/get_code_matches.sql

/**
* returns list of new codes
* from old code entry
* @param source - string oldcode
* @param startdate - YYYY-MM-DD format only
* @return mixed multi-dimensional array on success; false on no record
* @see @DB::is_error() in code for thrown exceptions
*
*/
SELECT NULL,
       g.source,
       g.target,
       dx9.NAME AS oldcode,
       dx9.DESCRIPTION old_description,
       dx10.NAME AS newname,
       dx10.DESCRIPTION AS new_description,
       g.flags,
       SUBSTR(g.flags, 4, 1) AS scenario,
       SUBSTR(g.flags, 5, 1) AS POSITION,
       SUBSTR(g.flags, 1, 1) AS approximate,
       SUBSTR(g.flags, 3, 1) AS combination,
       SUBSTR(g.flags, 2, 1) AS matches,
       CASE
           WHEN SUBSTR(g.flags, 2, 1) = 1 THEN 'No Matches'
           ELSE 'Matches'
       END AS MATCH TYPE,
                    CASE
                        WHEN SUBSTR(g.flags, 3, 1) = 1 THEN 'Combination Matches'
                        ELSE CASE
                                 WHEN SUBSTR(g.flags, 1, 1) THEN 'Approximate Matches'
                                 ELSE 'Match'
                             END
                    END AS status
FROM tablex g
LEFT JOIN tabley dx10 ON dx10.CODE = g.target
LEFT JOIN tablez dx9 ON dx9.CODE = g.source
WHERE 1
  AND g.source = ?
  AND g.startdate = ?

//然后是 OOP 代码中的某处:

$sql = $this->db->load_sql('get_code_matches'); // reads sql from file
$results = $this->db->FetchAll($sql, $bindParams); // returns results via pdo object

sql文件夹通过.htaccess进行保护,并为自定义数据库层获取数据。

我们发现我们的模型区域更有组织性,可以标记诸如此类的复杂查询。

查询仅在需要时才加载到代码中。

根据 IDE,“sql”文件夹始终打开以供快速引用。在某些情况下,sql 文件夹可能包含代表项目的每个模块的子文件夹。

这会被视为不好的做法吗?

最佳答案

对于 99.99% 的网站来说,这没有任何意义。

对于 0.01% 高负载的网站,建议将这些 SQL 查询放入 PHP 文件中,让它们缓存在 opcache 中,这样就不会在每次请求时都读取它们。

关于php - 将 MySQL 查询存储在文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32414493/

相关文章:

php - MYSQL 选择日期范围内的最大计数

php - php scandir() 是否排除 Windows 下的隐藏文件?

mysql - 在一个 SQL 查询中获取唯一 View 和 View

python - 默认情况下,Python 的 MySQLdb 游标本质上是阻塞的吗?

php - 双引号 PHP 和 mysql

php - 在 while 循环中访问第二个表

php - uiSlider 变量在发布时保持不变

java - Hibernate merge 同时进行插入和删除

python - MySQL插入字符串,python插入为单个字符

php - 为什么 ctype_digit(0) 返回 FALSE