ลงทะเบียน
ใกล้กัน ช่วยให้คุณแชร์เรื่องราวต่างๆ กับผู้คนมากมาย

การแก้ปัญหา SQL Server

การแก้ปัญหา SQL Server

โพสต์ใน: SQL Server / - โดย - Jun 18, 2020

ปัญหาพื้นที่ Log ทำให้พื้นที่เต็ม

เมื่อมีข้อมูล 100,000 รายการ และมีผู้ใช้ต่อวันจำนวนมากจะเกิดปัญหาพื้นที่เต็มจากไฟล์ Log ที่ SQL Server จะเก็บ Log ทุกรายการ

วิธีแก้ปัญหาลดพื้นที่ด้วยคำสั่ง Shrink ทำดังนี้ > ให้คลิกขวาที่ฐานข้อมูล tempdb > เลือกคำสั่ง Tasks > เลือกคำสั่ง Shrink และ เลือกไฟล์

 

 

คลิกขวาที่ฐานข้อมูล tempdb

  

เลือกคำสั่ง Shrink และ เลือกไฟล์

 

 

นับจำนวนข้อมูลทีละหลายรายการ

SELECT TOP(1) 
  COUNTUNIT1 = (
  SELECT COUNT (*) AS COUNTUNIT1
  FROM dbo.PropertyList AS Ppl
  WHERE Ppl.ProjectID = 0835
	AND Ppl.MemberID <> 12
	AND Ppl.CommissionRate IS NOT NULL
  )
  , COUNTUNIT2 = (SELECT * )
  , COUNTUNIT3 = (SELECT * )
FROM
  dbo.PropertyList AS Ppl
;

 

เพิ่มความเร็ว SQL ตอนที่ Query รูปภาพด้วยคำสั่ง ROW_NUMBER()

LEFT OUTER JOIN
  (SELECT
    FileName
    , ReferenceID
  FROM
    (SELECT
      ROW_NUMBER() over (
        PARTITION BY ReferenceID
    ORDER BY ReferenceID ASC
    ) AS lrid
    , *
    FROM
      dbo.AttachFile Att) t1
  WHERE lrid = 1) Att
  ON Att.ReferenceID = Ppl.PropertyListID

 

ดึงวันและเวลานั้น ๆ จากฐานข้อมูล SQL Server

getdate()

 

แทนที่ข้อความในฐานข้อมูล SQL Server

REPLACE(string, old_substring, new_substring);
วิธีใช้
UPDATE [dbo.ชื่อฐานข้อมูล] SET [ชื่อคอลัมท์] = REPLACE([ชื่อคอลัมท์], '[ข้อความเก่า]', '[ข้อความใหม่]') WHERE ID <=4

 

การเรียง ID สำหรับฐานข้อมูล SQL SERVER


วิธีใช้:
$arrPID = array(7818, 7845, 7825, 7815);


$sqlOrderBy = setOrderByPID( [$arrPID], '[ProjectID]' ); 

OUTPUT:

ORDER BY CASE Pj.ProjectID
 WHEN 7818 THEN 1 
 WHEN 7845 THEN 2 
 WHEN 7825 THEN 3 
 WHEN 7815 THEN 4 
END

 

function setOrderByPID($rangProjectID = array(), $colOrderName = "[ProjectID]")
{
    if ( !is_array($rangProjectID) || !sizeof($rangProjectID)) {
        return;
    }

    //Order By
    $intOderBy = 1;
    foreach ($rangProjectID as $valUniqueNearbyPID) {
        $arrOrderBY[] = " WHEN {$valUniqueNearbyPID} THEN {$intOderBy} ";
        $intOderBy++;
    } //foreach
    $whenOrderBy = implode("\n", $arrOrderBY);

    $sqlWhenOrderBY = "
    ORDER BY CASE {$colOrderName}
    {$whenOrderBy}
    END
    ";

    return $sqlWhenOrderBY;
}

 

ดู Auto Increment ล่าสุด

SELECT IDENT_CURRENT('ProjectUser') AS NUMIDENT;
//OUTPUT: 1 (หากมากกว่า 1 ให้บวกเพิ่ม)

 

Reset Auto Increment for SQL Server: exsample reset to 7 and next 8

DBCC CHECKIDENT ([TableName], RESEED, 7);

 

ปัญหา JSON AUTO ตัวเลขทศนิยมเพี้ยน วิธีแก้ให้ใช้ CAST เป็น DECIMAL

//ประกาศตัวแปร StartPrice

DECLARE @StartPrice FLOAT = 9.63322

 

แสดงทศนิยม 6 ตำแหน่ง ด้วยคำสั่ง CAST ของ SQL Server เช่นนำไปใช้กับ Latitude และ Longitude บนแผนที่ Google Maps

SELECT CAST(Latitude AS DECIMAL(18,6)) AS Latitude
SELECT CAST(Longitude AS DECIMAL(18,6)) AS Longitude

 

แสดงทศนิยม 2 ตำแหน่ง ด้วยคำสั่ง CAST ของ SQL Server

SELECT CAST(StartPrice AS DECIMAL(18,2)) AS StartPrice

 

ผลลัพท์: 9.63

หมายเหตุ: 
DECIMAL หากไม่ใส่วงเล็บ (18,2) ข้างท้ายจะได้ผลลัพท์: 9
AS คือชื่อใหม่ที่เราสามารถกำหนดเองได้ตามใจ โดยยึดถือหลักให้ชื่อสอดคล้องกับผลลัพท์ จะดูเป็นมืออาชีพ

 

https://stackoverflow.com/questions/16412231/how-to-get-2-digits-after-decimal-point-in-tsql

 

ลบเฉพาะข้อมูลทั้งหมดในตาราง (ทดสอบแล้ว 100%)

TRUNCATE TABLE [ชื่อตาราง];

 

แบ่งข้อมูลหลายหน้า 

วิธีใช้: ก้อปคำสั่งนี้ไว้ท้ายสุด SQL ต้องใช้ร่วมกับคำสั่ง ORDER BY (ไม่สามารถใช้ร่วมกับคำสั่ง TOP ได้)

ORDER BY [ID] DESC
OFFSET [เริ่มต้น:ตัวเลข] ROWS
FETCH NEXT [จำนวนที่ต้องการ:ตัวเลข] ROWS ONLY;

 

เขียนเว็บไซต์

User not write anything about he.
Captcha Challenge
ลองรูปภาพใหม่
Type in the verification code above

ลองอ่านดูน่าสนใจ: