ปัญหาพื้นที่ 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 LatitudeSELECT 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;