使用Usingtemporary解释mysql性能中的计划;使用文件排序;使用索引条件

2024-01-07

我在线阅读各种博客和文档,但只是想知道如何优化查询。我无法决定是否必须重写查询或添加索引才能优化。

还添加创建表结构

CREATE TABLE `dsr_table` (
  `DSR_VIA` CHAR(3) DEFAULT NULL,
  `DSR_PULLDATA_FLAG` CHAR(1) DEFAULT 'O',
  `DSR_BILLING_FLAG` CHAR(1) DEFAULT 'O',
  `WH_FLAG` CHAR(1) DEFAULT 'O',
  `ARCHIVE_FLAG` CHAR(1) NOT NULL DEFAULT 'O',
  `DSR_BOOKING_TYPE` INT(2) DEFAULT NULL,
  `DSR_BRANCH_CODE` CHAR(3) NOT NULL,
  `DSR_CNNO` CHAR(12) NOT NULL,
  `DSR_BOOKED_BY` CHAR(1) NOT NULL,
  `DSR_CUST_CODE` VARCHAR(7) NOT NULL,
  `DSR_CN_WEIGHT` DECIMAL(8,3) NOT NULL,
  `DSR_CN_TYPE` CHAR(3) NOT NULL,
  `DSR_DEST` CHAR(3) NOT NULL,
  `DSR_MODE` CHAR(2) NOT NULL,
  `DSR_NO_OF_PIECES` DECIMAL(3,0) NOT NULL,
  `DSR_DEST_PIN` DECIMAL(6,0) DEFAULT NULL,
  `DSR_BOOKING_DATE` DATE NOT NULL,
  `DSR_AMT` DECIMAL(10,2) DEFAULT NULL,
  `DSR_STATUS` CHAR(1) NOT NULL,
  `DSR_POD_RECD` CHAR(1) DEFAULT NULL,
  `DSR_TRANSMF_NO` VARCHAR(10) NOT NULL,
  `DSR_BOOKING_TIME` CHAR(8) NOT NULL,
  `DSR_DOX` CHAR(1) NOT NULL,
  `DSR_SERVICE_TAX` DECIMAL(4,2) DEFAULT NULL,
  `DSR_SPL_DISC` DECIMAL(10,2) DEFAULT NULL,
  `DSR_CONTENTS` VARCHAR(255) DEFAULT NULL,
  `DSR_REMARKS` VARCHAR(25) DEFAULT NULL,
  `DSR_VALUE` VARCHAR(20) DEFAULT NULL,
  `DSR_INVNO` VARCHAR(10) DEFAULT NULL,
  `DSR_INVDATE` DATE DEFAULT NULL,
  `MOD_DATE` DATE DEFAULT NULL,
  `OFFICE_TYPE` CHAR(2) DEFAULT NULL,
  `OFFICE_CODE` CHAR(3) DEFAULT NULL,
  `DSR_REFNO` VARCHAR(50) DEFAULT NULL,
  `MOD_TIME` DECIMAL(4,0) DEFAULT NULL,
  `NODEID` VARCHAR(20) DEFAULT NULL,
  `USERID` VARCHAR(7) DEFAULT NULL,
  `TRANS_STATUS` CHAR(1) DEFAULT NULL,
  `DSR_ACT_CUST_CODE` VARCHAR(11) DEFAULT NULL,
  `DSR_MOBILE` VARCHAR(25) DEFAULT NULL,
  `DSR_EMAIL` VARCHAR(50) DEFAULT NULL,
  `DSR_NDX_PAPER` CHAR(1) DEFAULT NULL,
  `DSR_PICKUP_TIME` DECIMAL(4,0) DEFAULT NULL,
  `DSR_VOL_WEIGHT` DECIMAL(8,3) DEFAULT NULL,
  `DSR_CAPTURED_WEIGHT` DECIMAL(8,3) DEFAULT NULL,
  `DSR_PRODUCT` CHAR(3) DEFAULT NULL,
  `DSR_TRANS_STATUS_XI` CHAR(1) DEFAULT 'A',
  `DSR_TRANS_ID` DECIMAL(10,0) DEFAULT NULL,
  `DSR_ID_TYPE` INT(2) DEFAULT NULL,
  `DSR_ID_NUM` VARCHAR(50) DEFAULT NULL,
  `DSR_WT_CAPTURED` INT(1) DEFAULT NULL,
  `DSR_PUP_FRCODE` VARCHAR(7) DEFAULT NULL,
  `DSR_TS_AMT` DECIMAL(10,2) DEFAULT NULL,
  `DSR_FSC_PER` DECIMAL(4,2) DEFAULT NULL,
  `DSR_RATE_ID` DECIMAL(8,0) DEFAULT NULL COMMENT 'Used to store RateID by which final rate is calculated',
  `RECORD_ENTRY_DATETIME` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `Record_creation_date` DATETIME DEFAULT NULL,
  `Record_Arrival_date` DATETIME DEFAULT NULL,
  `DSR_CONSIGNEE_MOBILE` VARCHAR(11) DEFAULT NULL,
  `DSR_PREV_WEIGHT` DECIMAL(8,3) DEFAULT NULL,
  `DSR_PREV_AMT` DECIMAL(10,2) DEFAULT NULL,
  `DSR_GOR_REMARKS` VARCHAR(50) DEFAULT NULL,
  `DSR_GOR_VOL_WT` DECIMAL(8,3) DEFAULT NULL,
  PRIMARY KEY (`DSR_CNNO`),
  KEY `idx_bcd_cnno_bkdate` (`DSR_BRANCH_CODE`,`DSR_CNNO`,`DSR_BOOKING_DATE`),
  KEY `idx_dsr_bkdate` (`DSR_BOOKING_DATE`),
  KEY `idx_dsr_custcode` (`DSR_CUST_CODE`),
  KEY `idx_dsr_invoiceno` (`DSR_INVNO`),
  KEY `idx_dsr_mdate` (`MOD_DATE`),
  KEY `idx_dsr_bookdby_ccd_cnno` (`DSR_BOOKED_BY`,`DSR_CUST_CODE`,`DSR_CNNO`),
  KEY `idx_dsr_bkdby_ccd_bkd_stat` (`DSR_BOOKED_BY`,`DSR_CUST_CODE`,`DSR_BOOKING_DATE`,`DSR_STATUS`),
  KEY `idx_dsr_refno` (`DSR_REFNO`),
  KEY `idx_dsr_txi_stat_mdate` (`DSR_TRANS_STATUS_XI`,`DSR_STATUS`,`MOD_DATE`),
  KEY `idx_dsr_trans_id` (`DSR_TRANS_ID`),
  KEY `idx_dsr_inv_date` (`DSR_INVDATE`),
  KEY `IDX_Create_arr_date` (`Record_creation_date`,`Record_Arrival_date`)
) ENGINE=INNODB DEFAULT CHARSET=latin1 

这是我正在尝试执行的查询。请帮我解决这个问题。

select ob.BRANCH_CITY orig_city,dstb.BRANCH_CITY dest_city,round(sum(CASE WHEN left(dsr_cnno, 1) IN ('V', 'E', 'X') THEN
IFNULL(value, 0) ELSE 0 END),2) Premium,
round(sum(CASE WHEN left(dsr_cnno, 1) NOT IN ('V', 'E', 'X') THEN  IFNULL(value, 0) ELSE 0 END),2) Non_Premium
from ( select DSR_BRANCH_CODE,dsr_cnno,DSR_AMT,
((dsr_amt) +((((dsr_amt)-ifnull((select max(ndsr_ins_amt) from ndx_dsr_table where ndsr_cnno=dsr_cnno ),0)-ifnull((select max(ndsr_serv_charge) from ndx_dsr_table where ndsr_cnno=dsr_cnno ),0) -ifnull((select sum(dr_extra_amt) from dsr_revenue where dr_cnno=dsr_cnno ),0))-(((dsr_amt)-ifnull((select max(ndsr_ins_amt) from ndx_dsr_table where ndsr_cnno=dsr_cnno ),0) -ifnull((select max(ndsr_serv_charge) from ndx_dsr_table where ndsr_cnno=dsr_cnno ),0)
-ifnull((select sum(dr_extra_amt) from dsr_revenue where dr_cnno=dsr_cnno ),0) )*ifnull(((select fr_discount from fr_mas where fr_Code=dsr_cust_code)),0)/100)) *ifnull(((select (case when dsr_invdate <'2017-05-01' then ifnull(fr_fsc_per,0) else 30 end) from fr_mas where fr_code=dsr_cust_code limit 1)),0)/100)) as value, dsr_cust_code
,dsr_dest_pin from dsr_table d where  dsr_booking_date BETWEEN '2017-05-01' AND '2017-06-30' AND LENGTH(dsr_cnno)=9 
AND DSR_BOOKED_BY ='F' AND dsr_status<>'R' AND dsr_cnno NOT LIKE 'J%' AND dsr_cnno NOT LIKE '@%'
AND dsr_cnno NOT LIKE '576%' AND dsr_cnno NOT LIKE 'I3%' AND dsr_cnno NOT LIKE '7%'
AND dsr_cnno NOT LIKE 'N%' and d.dsr_dest_pin>0) zz
inner join fr_mas f on f.FR_CODE=zz.dsr_cust_code
inner join branch_mas ob on ob.BRANCH_CODE=zz.dsr_branch_code and ob.BRANCH_LOC='L'
inner join serv_dest_mas dm on dm.SERV_PIN=zz.dsr_dest_pin 
inner join branch_mas dstb on dstb.BRANCH_CODE=dm.SERV_BRANCH and dstb.BRANCH_LOC='L'
where dstb.BRANCH_CITY in ('HYD','DEL','AMD','GGN','BLR','PNQ','MUM','CHE','CCU','NOD')
and ob.BRANCH_CITY in('HYD','DEL','AMD','GGN','BLR','PNQ','MUM','CHE','CCU','NOD')
group by orig_city,dest_city ; 

这是我的解释计划:

      id  select_type         table          type    possible_keys                                                       key                       key_len  ref                             rows  Extra                                                                
------  ------------------  -------------  ------  ------------------------------------------------------------------  ------------------------  -------  -------------------------  ---------  ---------------------------------------------------------------------
     1  PRIMARY             ob             range   PRIMARY,FK_BRM_CITYMAS                                              FK_BRM_CITYMAS            4        (NULL)                            10  Using index condition; Using where; Using temporary; Using filesort  
     1  PRIMARY             <derived2>     ref     <auto_key2>                                                         <auto_key2>               3        billingdb.ob.BRANCH_CODE      319051  Using where                                                          
     1  PRIMARY             f              eq_ref  PRIMARY                                                             PRIMARY                   9        zz.dsr_cust_code                   1  Using index                                                          
     1  PRIMARY             dm             ref     PRIMARY,IDX_SDM_SERVPIN_STATUS1                                     IDX_SDM_SERVPIN_STATUS1   3        zz.dsr_dest_pin                    2  Using index                                                          
     1  PRIMARY             dstb           eq_ref  PRIMARY,FK_BRM_CITYMAS                                              PRIMARY                   3        billingdb.dm.SERV_BRANCH           1  Using where                                                          
     2  DERIVED             d              ref     idx_dsr_bkdate,idx_dsr_bookdby_ccd_cnno,idx_dsr_bkdby_ccd_bkd_stat  idx_dsr_bookdby_ccd_cnno  1        const                      182365315  Using index condition; Using where                                   
    10  DEPENDENT SUBQUERY  fr_mas         eq_ref  PRIMARY                                                             PRIMARY                   9        billingdb.d.DSR_CUST_CODE          1  (NULL)                                                               
     9  DEPENDENT SUBQUERY  fr_mas         eq_ref  PRIMARY                                                             PRIMARY                   9        billingdb.d.DSR_CUST_CODE          1  (NULL)                                                               
     8  DEPENDENT SUBQUERY  dsr_revenue    ref     PRIMARY                                                             PRIMARY                   12       billingdb.d.DSR_CNNO               1  (NULL)                                                               
     7  DEPENDENT SUBQUERY  ndx_dsr_table  eq_ref  PRIMARY                                                             PRIMARY                   12       billingdb.d.DSR_CNNO               1  (NULL)                                                               
     6  DEPENDENT SUBQUERY  ndx_dsr_table  eq_ref  PRIMARY                                                             PRIMARY                   12       billingdb.d.DSR_CNNO               1  (NULL)                                                               
     5  DEPENDENT SUBQUERY  dsr_revenue    ref     PRIMARY                                                             PRIMARY                   12       billingdb.d.DSR_CNNO               1  (NULL)                                                               
     4  DEPENDENT SUBQUERY  ndx_dsr_table  eq_ref  PRIMARY                                                             PRIMARY                   12       billingdb.d.DSR_CNNO               1  (NULL)                                                               
     3  DEPENDENT SUBQUERY  ndx_dsr_table  eq_ref  PRIMARY                                                             PRIMARY                   12       billingdb.d.DSR_CNNO               1  (NULL)                                                               

Update

我尝试也在 INDEX(DSR_BOOKED_BY, dsr_booking_date, dsr_cnno、dsr_status、dsr_cnno、dsr_dist_pin、id)但没有运气。

服务器的 RAM 大小为 16GB,innodb 缓冲池大小为 12GB

这个查询花了将近8个小时但最终没有结果

UPDATE

适用于特定日期的查询:

SELECT  ob.BRANCH_CITY orig_city, 
    (
        SELECT  LEFT(branch_code,1)
            FROM  branch_mas c,serv_dest_mas b
            WHERE  c.branch_loc='L'
              AND  LEFT(c.branch_code,1) IN ('K','H','C','B','M','A',
                        'P','N','S','L'
                       )
              AND  c.branch_code=b.serv_branch
              AND  b.serv_pin=zz.dsr_dest_pin
        LIMIT  1
    ) dest_city,
        ROUND(SUM(CASE WHEN LEFT(dsr_cnno, 1) IN ('V', 'E', 'X')
                       THEN IFNULL(VALUE,
                        0) ELSE 0 END),2) Premium,
        ROUND(SUM(CASE WHEN LEFT(dsr_cnno,
       1) NOT IN ('V', 'E', 'X') THEN IFNULL(VALUE,
       0) ELSE 0 END),2
             ) Non_Premium FROM
    (
        SELECT  DSR_BRANCH_CODE,dsr_cnno,DSR_AMT,
                    ((dsr_amt) +((((dsr_amt) -IFNULL( (
               SELECT  MAX(ndsr_serv_charge)
                   FROM  ndx_dsr_table
                   WHERE  ndsr_cnno=dsr_cnno ),0) -IFNULL(
           (
               SELECT  SUM(dr_extra_amt)
                   FROM  dsr_revenue
                   WHERE  dr_cnno=dsr_cnno ),0))-(((dsr_amt) -IFNULL(
                   (
                       SELECT  MAX(ndsr_ins_amt)
                           FROM  ndx_dsr_table
                           WHERE  ndsr_cnno=dsr_cnno ),0
                          ) -IFNULL(
                   (
                       SELECT  MAX(ndsr_serv_charge)
                           FROM  ndx_dsr_table
                           WHERE  ndsr_cnno=dsr_cnno ),0
                          ) -IFNULL(
                   (
                       SELECT  SUM(dr_extra_amt)
                           FROM  dsr_revenue
                           WHERE  dr_cnno=dsr_cnno ),0) 
                          ) *IFNULL((
                   (
                       SELECT  fr_discount
                           FROM  fr_mas
                           WHERE  fr_Code=dsr_cust_code)),0)/100)) *
                           IFNULL(( (
       SELECT  (CASE WHEN dsr_invdate <'2017-05-01'
                     THEN IFNULL(fr_fsc_per,
                               0) ELSE 30 END )
           FROM  fr_mas
           WHERE  fr_code=dsr_cust_code
           LIMIT  1)),0)/100)
                    ) AS VALUE, dsr_cust_code, dsr_dest_pin
            FROM  dsr_table d
            WHERE  dsr_booking_date = '2017-04-30'
              AND  LENGTH(dsr_cnno)=9
              AND  DSR_BOOKED_BY ='F'
              AND  dsr_status<>'R'
              AND  d.dsr_dest_pin>0 
    ) zz
    INNER JOIN  fr_mas f  ON f.FR_CODE=zz.dsr_cust_code
    INNER JOIN  branch_mas ob  ON ob.BRANCH_CODE=zz.dsr_branch_code
      AND  ob.BRANCH_LOC='L'
    WHERE  ob.BRANCH_CITY IN('HYD','DEL','AMD','GGN','BLR','PNQ',
                'MUM','CHE','CCU','NOD'
                          )
      AND  d.dsr_cnno = f.dsr_cnno

如果我们指定一个月,上面的代码不适用于日期范围:

SELECT  ob.BRANCH_CITY orig_city, 
    (
        SELECT  LEFT(branch_code,1)
            FROM  branch_mas c,serv_dest_mas b
            WHERE  c.branch_loc='L'
              AND  LEFT(c.branch_code,1) IN ('K','H','C','B','M','A',
                        'P','N','S','L'
                       )
              AND  c.branch_code=b.serv_branch
              AND  b.serv_pin=zz.dsr_dest_pin
        LIMIT  1
    ) dest_city,
        ROUND(SUM(CASE WHEN LEFT(dsr_cnno, 1) IN ('V', 'E', 'X')
                       THEN IFNULL(VALUE,
                        0) ELSE 0 END),2) Premium,
        ROUND(SUM(CASE WHEN LEFT(dsr_cnno,
       1) NOT IN ('V', 'E', 'X') THEN IFNULL(VALUE,
       0) ELSE 0 END),2
             ) Non_Premium FROM
    (
        SELECT  DSR_BRANCH_CODE,dsr_cnno,DSR_AMT,
                    ((dsr_amt) +((((dsr_amt) -IFNULL( (
               SELECT  MAX(ndsr_serv_charge)
                   FROM  ndx_dsr_table
                   WHERE  ndsr_cnno=dsr_cnno ),0) -IFNULL(
           (
               SELECT  SUM(dr_extra_amt)
                   FROM  dsr_revenue
                   WHERE  dr_cnno=dsr_cnno ),0))-(((dsr_amt) -IFNULL(
                   (
                       SELECT  MAX(ndsr_ins_amt)
                           FROM  ndx_dsr_table
                           WHERE  ndsr_cnno=dsr_cnno ),0
                          ) -IFNULL(
                   (
                       SELECT  MAX(ndsr_serv_charge)
                           FROM  ndx_dsr_table
                           WHERE  ndsr_cnno=dsr_cnno ),0
                          ) -IFNULL(
                   (
                       SELECT  SUM(dr_extra_amt)
                           FROM  dsr_revenue
                           WHERE  dr_cnno=dsr_cnno ),0) 
                          ) *IFNULL((
                   (
                       SELECT  fr_discount
                           FROM  fr_mas
                           WHERE  fr_Code=dsr_cust_code)),0)/100)
                          ) *IFNULL((
   (
       SELECT  (CASE WHEN dsr_invdate <'2017-05-01'
                     THEN IFNULL(fr_fsc_per,
                               0) ELSE 30 END )
           FROM  fr_mas
           WHERE  fr_code=dsr_cust_code
           LIMIT  1)),0)/100)
                    ) AS VALUE, dsr_cust_code, dsr_dest_pin
            FROM  dsr_table d
            WHERE  dsr_booking_date = '2017-04-30'
              AND  '2017-05-30'
              AND  LENGTH(dsr_cnno)=9
              AND  DSR_BOOKED_BY ='F'
              AND  dsr_status<>'R'
              AND  d.dsr_dest_pin>0 
    ) zz
    INNER JOIN  fr_mas f  ON f.FR_CODE=zz.dsr_cust_code
    INNER JOIN  branch_mas ob  ON ob.BRANCH_CODE=zz.dsr_branch_code
      AND  ob.BRANCH_LOC='L'
    WHERE  ob.BRANCH_CITY IN('HYD','DEL','AMD','GGN','BLR','PNQ',
                'MUM','CHE','CCU','NOD'
                          )
      AND  d.dsr_cnno = f.dsr_cnno 

请提供SHOW CREATE TABLE.

主要过滤器似乎是

            where  dsr_booking_date BETWEEN '2017-05-01' AND '2017-06-30'
              AND  LENGTH(dsr_cnno)=9
              AND  DSR_BOOKED_BY ='F'
              AND  dsr_status<>'R'
              AND  dsr_cnno NOT LIKE 'J%'
              AND  dsr_cnno NOT LIKE '@%'
              AND  dsr_cnno NOT LIKE '576%'
              AND  dsr_cnno NOT LIKE 'I3%'
              AND  dsr_cnno NOT LIKE '7%'
              AND  dsr_cnno NOT LIKE 'N%'
              and  d.dsr_dest_pin>0

可能唯一有用的索引是,按以下顺序:

INDEX(DSR_BOOKED_BY, dsr_booking_date)

ifnull((select max(ndsr_ins_amt)     from ndx_dsr_table where ndsr_cnno=dsr_cnno ),0)-
ifnull((select max(ndsr_serv_charge) from ndx_dsr_table where ndsr_cnno=dsr_cnno ),0) -

也许应该一起完成。考虑类似的事情

ifnull(mm.max_nia), 0) -
ifnull(mm.max_nsc), 0) .
...
LEFT JOIN ( SELECT max(ndsr_ins_amt)     AS max_nia,
                   max(ndsr_serv_charge) AS max_nsc
                from ndx_dsr_table
          ) AS mm  ON ndsr_cnno=dsr_cnno

或者,如果需要,使用该子查询构建一个临时表,然后 LEFT JOIN 到它。

(由于您尚未使用其所在的表来限定每一列,因此我无法更具体。)

您是否有适合各种情况的“综合”索引JOINs?

根据EXPLAIN,它正在扫描 182M 行dsr_table。因此,我上面的索引可能会有所帮助(如果您还没有类似的索引)。

我犹豫是否建议这么长的索引,但这可能会有所帮助:

INDEX(DSR_BOOKED_BY, dsr_booking_date,  -- these first, in this order
      dsr_cnno, dsr_status, dsr_cnno, dsr_dist_pin,  -- in any order
      id)   -- (whatever the PK of the table is); last

第二次查询中的坏问题

        WHERE  dsr_booking_date = '2017-04-30'
          AND  '2017-05-30'

也许你的意思是 31 天:

        WHERE  dsr_booking_date BETWEEN '2017-04-30'
                                   AND  '2017-05-30'

或者也许 2 天:

        WHERE  dsr_booking_date IN ('2017-04-30', '2017-05-30')

你拥有的是

        WHERE  dsr_booking_date = '2017-04-30'  -- test for one day
          AND  true  -- that's how '2017-05-30' is interpreted
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Usingtemporary解释mysql性能中的计划;使用文件排序;使用索引条件 的相关文章

  • Mysql对三表多列的连接查询

    我有三个这样的表 专业化 sid s name 1 test 1 2 test 2 Person pid name sid 1 ABC 1 2 XYZ 2 Timing tid time from time to pid 1 08 00 0
  • 选择不带 FROM 但有多于一行的选择

    如何在不从现有表中进行选择的情况下生成 2 行 2 列的表 我正在寻找的是一个返回的选择语句 e g id value 1 103 2 556 Use UNION http dev mysql com doc refman 5 0 en u
  • 有没有办法从 MySQL 的列中提取与正则表达式匹配的文本?

    例如 如果特定列中的所有条目都具有 a z 0 9 形式 如何仅提取前导字母 以便 asdf123 和 as3456 分别返回 asdf 和 as 这对于 mysql 正则表达式功能来说是不可能的 除非安装一些似乎是为此设计的 udf 从技
  • 如何使用Python高效地将CSV文件数据插入MYSQL?

    我有一个带有 aprox 的 CSV 输入文件 400 万条记录 插入已运行超过 2 小时 但仍未完成 数据库仍然是空的 关于如何实际插入值的任何建议 使用insert into 并且更快 比如将插入物分成块 我对 python 还很陌生
  • UV 展开运行时优化

    我正在尝试在运行时创建 UV 我使用 BOX 类型 UV 类似于 3ds max 中的 BOX UVW 并基于面方向进行计算 我知道将其创建为运行时不是一个好的选择 但我别无选择 它是在计算后保存的 所以我做了一次 但我花了 40 秒处理
  • 是否可以从数据库转储生成 knex 种子文件?

    就我而言 我使用的是 mysql 但是 我正在寻找一种通用解决方案 用于从当前运行的数据库或数据库转储生成 knex 种子文件 我可以就像是 https github com tgriesser knex issues 944 issuec
  • 如何在pandas中将字符串转换为没有日期的日期时间

    例如issue d数据框中的列是字符串 df issue d Dec 2012 我想将字符串转换为日期时间类型而不是字符串类型 2012 12 怎么做 I use datetime strptime x b Y for x in df is
  • 澄清创建临时表的连接顺序

    我在 mysql 中有一个大型查询 涉及将多个表连接在一起 它太慢了 所以我做了 解释 发现它正在创建一个临时表 我怀疑它占用了大部分执行时间 我找到了一些相关资料 mysql 文档 http dev mysql com doc refma
  • MySQL按总和连接表问题

    我在连接表时遇到问题 以下是示例表 表A 30行 ID Name Description 1 Type Unicode Art 2 Header Spreadsheet 3 Auto Align Off 表B 100行 ID Name De
  • 在 MySQL 表中存储用户密码的最佳 PHP 哈希方法?

    我已经阅读 Stack Overflow 问题大约 15 分钟了 每一个问题似乎都与我之前读到的问题相矛盾 Bcrypt SHA1 MD5 等 我目前对我的密码进行 MD5 但我想让我的数据库在发生泄露时更加安全 我知道这个问题已经被问了一
  • 更新或插入 MySQL Python

    如果记录已存在 我需要更新一行 如果不存在 我需要创建一个新记录 我理解 ON DUPLICATE KEY 将使用 MYSQLdb 完成此操作 但是我无法使其正常工作 我的代码如下 cursor database cursor cursor
  • 严格标准:资源 ID#73 用作偏移量,转换为整数

    我使用这个 PHP 函数获取 MySql 结果 function fetcharray query id if query id query id this gt query res if query id this gt q array
  • MySQL-分割字符串

    我的问题与这篇文章类似 MySQL 中的 反向 GROUP CONCAT https stackoverflow com questions 17308669 reverse group concat in mysql 然而 而不是反转gr
  • 查询中的存储过程

    有一个程序获取文件列表 顾名思义 返回一个文件列表以及更多选项 那么是否可以在查询选择中使用此过程 像这样的东西 select Field1 from Image where Field2 IN call GetFileList 你应该把它
  • PDO 库比本机 MySQL 函数更快吗?

    我已经阅读了几个与此相关的问题 但我担心它们可能已经过时 因为自这些问题得到解答以来 更新版本的 PDO 库已经发布 我编写了一个 MySQL 类 它构建查询并转义参数 然后根据查询返回结果 目前这个类正在使用内置的mysql函数 我很清楚
  • 删除重复的 SQL 记录以允许唯一键

    我在 MYSQL 数据库中有一个表 销售 该表理应强制执行唯一约束以防止重复 事实证明 首先删除欺骗并设置约束有点棘手 表结构 简化 id 唯一 autoinc 产品编号 目标是强制product id 的唯一性 我想要应用的重复数据删除策
  • PHP 中的 SQL 语句与 phpmyadmin 中的 SQL 语句的行为不同

    I have form store sql INSERT INTO myodyssey myaccount id email username password VALUES NULL email unixmiah formtest woo
  • 使用 LIKE 和撇号的 Mysql 查询问题

    所以我有一个有趣的问题 我从未遇到过 并且似乎找不到太多有关纠正该问题的信息 我有一个庞大的数据库 里面有大量的数据 相当于 10 年的数据 并试图对其进行搜索 现在搜索功能运行良好 但最近有人让我注意到一个 错误 如果你愿意的话 我尝试对
  • 使用mysql数据按高低价格排序

    这是我所拥有的以及我想做的 我的 MySql 数据库中有 12 个项目 4 个产品为 4 99 4 个产品为 3 99 4 个产品为 2 99 我意识到我可以像这样查询数据库 它会给我一个该价格的产品列表
  • 自动将范围内的值插入表中

    是否可以使用 MySQL 语句自动将值插入表中 即从 30 到 200 这是一个应该执行此操作的存储过程 CREATE PROCEDURE insert range BEGIN DECLARE i INT DEFAULT 30 WHILE

随机推荐