Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 子句基于两个独立的索引,一个名为LogID的主键和一个名为PrimaryAssetID的索引。问题是,如果LogID是“旧的”——比如说它是一个月前创建的——那么查询速度很慢,如果密钥是在上周创建的,那么查询速度很快(不到一秒钟)。我甚至不知道从哪里开始调_Mysql_Performance_Transaction Isolation - Fatal编程技术网

Mysql 子句基于两个独立的索引,一个名为LogID的主键和一个名为PrimaryAssetID的索引。问题是,如果LogID是“旧的”——比如说它是一个月前创建的——那么查询速度很慢,如果密钥是在上周创建的,那么查询速度很快(不到一秒钟)。我甚至不知道从哪里开始调

Mysql 子句基于两个独立的索引,一个名为LogID的主键和一个名为PrimaryAssetID的索引。问题是,如果LogID是“旧的”——比如说它是一个月前创建的——那么查询速度很慢,如果密钥是在上周创建的,那么查询速度很快(不到一秒钟)。我甚至不知道从哪里开始调,mysql,performance,transaction-isolation,Mysql,Performance,Transaction Isolation,子句基于两个独立的索引,一个名为LogID的主键和一个名为PrimaryAssetID的索引。问题是,如果LogID是“旧的”——比如说它是一个月前创建的——那么查询速度很慢,如果密钥是在上周创建的,那么查询速度很快(不到一秒钟)。我甚至不知道从哪里开始调查这件事。啊哈!MySQL不喜欢使用两个单独的索引,优化器中的某些内容已经发生了变化。我们真的需要看看比尔要求的东西(展示、解释等)。最好是新旧系统的解释。如果您正在/正在获取“索引合并相交”,则很可能有一个简单的解决方案。需要详细信息。谢谢瑞


子句基于两个独立的索引,一个名为LogID的主键和一个名为PrimaryAssetID的索引。问题是,如果LogID是“旧的”——比如说它是一个月前创建的——那么查询速度很慢,如果密钥是在上周创建的,那么查询速度很快(不到一秒钟)。我甚至不知道从哪里开始调查这件事。啊哈!MySQL不喜欢使用两个单独的索引,优化器中的某些内容已经发生了变化。我们真的需要看看比尔要求的东西(展示、解释等)。最好是新旧系统的
解释。如果您正在/正在获取“索引合并相交”,则很可能有一个简单的解决方案。需要详细信息。谢谢瑞克,让我把这些信息整理一下。有一点我应该澄清,当我声明SELECT将在INSERT发生时命中表时,我应该声明INSERT和UPDATE是不断发生的。如果有人运行一个报告(使用SELECT),则此时不太可能更新相关的特定记录。@JimBuckleyBarret-
SELECT
一行,并带有合适的索引?或
选择
许多行(对于“报告”)?可能是一行或数百行,这取决于用户从网页中选择的参数。我知道影响性能的查询。多年来,它一直在完美地运行,最近它已经慢到无法使用。where子句基于两个独立的索引,一个名为LogID的主键和一个名为PrimaryAssetID的索引。问题是,如果LogID是“旧的”——比如说它是一个月前创建的——那么查询速度很慢,如果密钥是在上周创建的,那么查询速度很快(不到一秒钟)。我甚至不知道从哪里开始调查这件事。啊哈!MySQL不喜欢使用两个单独的索引,优化器中的某些内容已经发生了变化。我们真的需要看看比尔要求的东西(展示、解释等)。最好是新旧系统的
解释。如果您正在/正在获取“索引合并相交”,则很可能有一个简单的解决方案。需要详细信息。谢谢瑞克,让我把这些信息整理一下。有一点我应该澄清,当我声明SELECT将在INSERT发生时命中表时,我应该声明INSERT和UPDATE是不断发生的。如果有人运行一个报告(使用SELECT),则此时不太可能更新相关的特定记录。@JimBuckleyBarret-
SELECT
一行,并带有合适的索引?或者
SELECT
很多行(对于“报告”)?可能是一行,也可能是几百行,这取决于用户从网页上选择的参数。MySQL的版本是什么?如果可行,请提供
EXPLAIN FORMAT=JSON SELECT..
说明“使用intersect”。MySQL的版本是什么?如果可行,请提供
EXPLAIN FORMAT=JSON SELECT..
,其中显示“使用intersect”。
CREATE TABLE `tblgpslog` (
    `GPSLogID` BIGINT(20) NOT NULL AUTO_INCREMENT,
    `DTSaved` DATETIME NULL DEFAULT NULL,
    `PrimaryAssetID` BIGINT(20) NULL DEFAULT NULL,
    `SecondaryAssetID` BIGINT(20) NULL DEFAULT NULL,
    `ThirdAssetID` BIGINT(20) NULL DEFAULT NULL,
    `JourneyType` CHAR(1) NOT NULL DEFAULT 'B',
    `DateStamp` DATETIME NULL DEFAULT NULL,
    `Status` VARCHAR(50) NULL DEFAULT NULL,
    `Location` VARCHAR(255) NULL DEFAULT '',
    `Latitude` DECIMAL(11,8) NULL DEFAULT NULL,
    `Longitude` DECIMAL(11,8) NULL DEFAULT NULL,
    `GPSFix` CHAR(2) NULL DEFAULT NULL,
    `Speed` BIGINT(20) NULL DEFAULT NULL,
    `Heading` INT(11) NULL DEFAULT NULL,
    `LifeOdometer` BIGINT(20) NULL DEFAULT NULL,
    `Extra` VARCHAR(20) NULL DEFAULT NULL,
    `BatteryLevel` VARCHAR(5) NULL DEFAULT '--',
    `Ignition` TINYINT(4) NOT NULL DEFAULT '1',
    `Radius` INT(11) NOT NULL DEFAULT '0',
    `GSMLatitude` DECIMAL(11,8) NOT NULL DEFAULT '0.00000000',
    `GSMLongitude` DECIMAL(11,8) NOT NULL DEFAULT '0.00000000',
    PRIMARY KEY (`GPSLogID`),
    UNIQUE INDEX `GPSLogID` (`GPSLogID`),
    INDEX `SecondaryUnitID` (`SecondaryAssetID`),
    INDEX `ThirdUnitID` (`ThirdAssetID`),
    INDEX `DateStamp` (`DateStamp`),
    INDEX `PrimaryUnitIDDateStamp` (`PrimaryAssetID`, `DateStamp`, `Status`),
    INDEX `Location` (`Location`),
    INDEX `DTSaved` (`DTSaved`),
    INDEX `PrimaryAssetID` (`PrimaryAssetID`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=153076364
;
SELECT L.GPSLogID, L.DateStamp, L.Status, Location, Latitude, Longitude, GPSFix, Speed, Heading, LifeOdometer, BatteryLevel, Ignition, L.Extra 
FROM tblGPSLog L 
WHERE PrimaryAssetID = 183 AND L.GPSLogID > 147694199
ORDER BY DateStamp ASC 
LIMIT 100;

"id","select_type","table","type","possible_keys","key","key_len","ref","rows","Extra"
"1","SIMPLE","L","index_merge","PRIMARY,GPSLogID,PrimaryUnitIDDateStamp,PrimaryAssetID","PrimaryAssetID,PRIMARY","9,8",\N,"96","Using intersect(PrimaryAssetID,PRIMARY); Using where; Using filesort"
EXPLAIN SELECT GPSLogID, DateStamp, tmpA.Status, Location, Latitude, Longitude, GPSFix, Speed, Heading, LifeOdometer, BatteryLevel, Ignition, tmpA.Extra, 
PrimaryAssetID FROM (SELECT L.GPSLogID, L.DateStamp, L.Status, Location, Latitude, Longitude, GPSFix, Speed, Heading, LifeOdometer, 
BatteryLevel, Ignition, L.Extra, PrimaryAssetID 
FROM tblGPSLog L 
WHERE L.GPSLogID > 147694199) AS tmpA 
WHERE PrimaryAssetID = 183 
ORDER BY DateStamp ASC;

"id","select_type","table","type","possible_keys","key","key_len","ref","rows","Extra"
"1","PRIMARY","<derived2>","ALL",\N,\N,\N,\N,"5380842","Using where; Using filesort"
"2","DERIVED","L","range","PRIMARY,GPSLogID","PRIMARY","8",\N,"8579290","Using where"
INDEX `PrimaryUnitIDDateStamp` (`PrimaryAssetID`, `DateStamp`,
INDEX `PrimaryAssetID`         (`PrimaryAssetID`)
PRIMARY KEY             (`GPSLogID`),
UNIQUE INDEX `GPSLogID` (`GPSLogID`),
SELECT  GPSLogID, DateStamp, tmpA.Status, Location, Latitude,
        Longitude, GPSFix, Speed, Heading, LifeOdometer, BatteryLevel,
        Ignition, tmpA.Extra, PrimaryAssetID
    FROM  
        ( SELECT  L.GPSLogID, L.DateStamp, L.Status, Location, Latitude,
                  Longitude, GPSFix, Speed, Heading, LifeOdometer, BatteryLevel,
                  Ignition, L.Extra, PrimaryAssetID
            FROM  tblGPSLog L
            WHERE  L.GPSLogID > 147694199
        ) AS tmpA
    WHERE  PrimaryAssetID = 183
    ORDER BY  DateStamp ASC;
INDEX `PrimaryAssetID`         (`PrimaryAssetID`)
INDEX `PrimaryAssetID`         (`PrimaryAssetID`, GPSLogID)